diff --git a/homeassistant/components/accuweather/strings.json b/homeassistant/components/accuweather/strings.json index c4305a0a7a5..432cc095c7b 100644 --- a/homeassistant/components/accuweather/strings.json +++ b/homeassistant/components/accuweather/strings.json @@ -2,8 +2,6 @@ "config": { "step": { "user": { - "title": "AccuWeather", - "description": "If you need help with the configuration have a look here: https://www.home-assistant.io/integrations/accuweather/\n\nSome sensors are not enabled by default. You can enable them in the entity registry after the integration configuration.\nWeather forecast is not enabled by default. You can enable it in the integration options.", "data": { "name": "[%key:common::config_flow::data::name%]", "api_key": "[%key:common::config_flow::data::api_key%]", @@ -12,6 +10,9 @@ } } }, + "create_entry": { + "default": "Some sensors are not enabled by default. You can enable them in the entity registry after the integration configuration.\nWeather forecast is not enabled by default. You can enable it in the integration options." + }, "error": { "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]", "invalid_api_key": "[%key:common::config_flow::error::invalid_api_key%]", @@ -24,7 +25,6 @@ "options": { "step": { "user": { - "title": "AccuWeather Options", "description": "Due to the limitations of the free version of the AccuWeather API key, when you enable weather forecast, data updates will be performed every 80 minutes instead of every 40 minutes.", "data": { "forecast": "Weather forecast" diff --git a/homeassistant/components/aemet/strings.json b/homeassistant/components/aemet/strings.json index 360f7c680ea..75c810978ad 100644 --- a/homeassistant/components/aemet/strings.json +++ b/homeassistant/components/aemet/strings.json @@ -1,31 +1,30 @@ { - "config": { - "abort": { - "already_configured": "[%key:common::config_flow::abort::already_configured_location%]" - }, - "error": { - "invalid_api_key": "[%key:common::config_flow::error::invalid_api_key%]" - }, - "step": { - "user": { - "data": { - "api_key": "[%key:common::config_flow::data::api_key%]", - "latitude": "[%key:common::config_flow::data::latitude%]", - "longitude": "[%key:common::config_flow::data::longitude%]", - "name": "Name of the integration" - }, - "description": "Set up AEMET OpenData integration. To generate API key go to https://opendata.aemet.es/centrodedescargas/altaUsuario", - "title": "AEMET OpenData" - } - } + "config": { + "abort": { + "already_configured": "[%key:common::config_flow::abort::already_configured_location%]" }, - "options": { - "step": { - "init": { - "data": { - "station_updates": "Gather data from AEMET weather stations" - } - } - } + "error": { + "invalid_api_key": "[%key:common::config_flow::error::invalid_api_key%]" + }, + "step": { + "user": { + "data": { + "api_key": "[%key:common::config_flow::data::api_key%]", + "latitude": "[%key:common::config_flow::data::latitude%]", + "longitude": "[%key:common::config_flow::data::longitude%]", + "name": "Name of the integration" + }, + "description": "To generate API key go to https://opendata.aemet.es/centrodedescargas/altaUsuario" + } } + }, + "options": { + "step": { + "init": { + "data": { + "station_updates": "Gather data from AEMET weather stations" + } + } + } + } } diff --git a/homeassistant/components/airly/strings.json b/homeassistant/components/airly/strings.json index c6b6f1e6a41..77f965b64c2 100644 --- a/homeassistant/components/airly/strings.json +++ b/homeassistant/components/airly/strings.json @@ -2,8 +2,7 @@ "config": { "step": { "user": { - "title": "Airly", - "description": "Set up Airly air quality integration. To generate API key go to https://developer.airly.eu/register", + "description": "To generate API key go to https://developer.airly.eu/register", "data": { "name": "[%key:common::config_flow::data::name%]", "api_key": "[%key:common::config_flow::data::api_key%]", diff --git a/homeassistant/components/airnow/strings.json b/homeassistant/components/airnow/strings.json index 9fc5bd3bccc..0e86c4531dc 100644 --- a/homeassistant/components/airnow/strings.json +++ b/homeassistant/components/airnow/strings.json @@ -2,8 +2,7 @@ "config": { "step": { "user": { - "title": "AirNow", - "description": "Set up AirNow air quality integration. To generate API key go to https://docs.airnowapi.org/account/request/", + "description": "To generate API key go to https://docs.airnowapi.org/account/request/", "data": { "api_key": "[%key:common::config_flow::data::api_key%]", "latitude": "[%key:common::config_flow::data::latitude%]", diff --git a/homeassistant/components/amberelectric/strings.json b/homeassistant/components/amberelectric/strings.json index cdbff2022b3..61d2c061955 100644 --- a/homeassistant/components/amberelectric/strings.json +++ b/homeassistant/components/amberelectric/strings.json @@ -6,7 +6,6 @@ "api_token": "API Token", "site_id": "Site ID" }, - "title": "Amber Electric", "description": "Go to {api_url} to generate an API key" }, "site": { @@ -14,9 +13,8 @@ "site_nmi": "Site NMI", "site_name": "Site Name" }, - "title": "Amber Electric", "description": "Select the NMI of the site you would like to add" } } } -} \ No newline at end of file +} diff --git a/homeassistant/components/androidtv/strings.json b/homeassistant/components/androidtv/strings.json index 1fd0231379f..7a46228bd4e 100644 --- a/homeassistant/components/androidtv/strings.json +++ b/homeassistant/components/androidtv/strings.json @@ -2,8 +2,6 @@ "config": { "step": { "user": { - "title": "Android TV", - "description": "Set required parameters to connect to your Android TV device", "data": { "host": "[%key:common::config_flow::data::host%]", "adbkey": "Path to your ADB key file (leave empty to auto generate)", @@ -29,7 +27,6 @@ "options": { "step": { "init": { - "title": "Android TV Options", "data": { "apps": "Configure applications list", "get_sources": "Retrieve the running apps as the list of sources", diff --git a/homeassistant/components/braviatv/strings.json b/homeassistant/components/braviatv/strings.json index fa0f91861e2..c00b143a442 100644 --- a/homeassistant/components/braviatv/strings.json +++ b/homeassistant/components/braviatv/strings.json @@ -2,8 +2,7 @@ "config": { "step": { "user": { - "title": "Sony Bravia TV", - "description": "Set up Sony Bravia TV integration. If you have problems with configuration go to: https://www.home-assistant.io/integrations/braviatv \n\nEnsure that your TV is turned on.", + "description": "Ensure that your TV is turned on before trying to set it up.", "data": { "host": "[%key:common::config_flow::data::host%]" } diff --git a/homeassistant/components/brother/strings.json b/homeassistant/components/brother/strings.json index 0b00a3b30cd..9d7d42abefa 100644 --- a/homeassistant/components/brother/strings.json +++ b/homeassistant/components/brother/strings.json @@ -3,14 +3,13 @@ "flow_title": "{model} {serial_number}", "step": { "user": { - "description": "Set up Brother printer integration. If you have problems with configuration go to: https://www.home-assistant.io/integrations/brother", "data": { "host": "[%key:common::config_flow::data::host%]", "type": "Type of the printer" } }, "zeroconf_confirm": { - "description": "Do you want to add the Brother Printer {model} with serial number `{serial_number}` to Home Assistant?", + "description": "Do you want to add the printer {model} with serial number `{serial_number}` to Home Assistant?", "title": "Discovered Brother Printer", "data": { "type": "Type of the printer" diff --git a/homeassistant/components/denonavr/strings.json b/homeassistant/components/denonavr/strings.json index eaa06c5ff88..e2a90a5c01b 100644 --- a/homeassistant/components/denonavr/strings.json +++ b/homeassistant/components/denonavr/strings.json @@ -3,14 +3,14 @@ "flow_title": "{name}", "step": { "user": { - "title": "Denon AVR Network Receivers", - "description": "Connect to your receiver, if the IP address is not set, auto-discovery is used", "data": { "host": "[%key:common::config_flow::data::ip%]" + }, + "data_description": { + "host": "Leave blank to use auto-discovery" } }, "confirm": { - "title": "Denon AVR Network Receivers", "description": "Please confirm adding the receiver" }, "select": { @@ -35,7 +35,6 @@ "options": { "step": { "init": { - "title": "Denon AVR Network Receivers", "description": "Specify optional settings", "data": { "show_all_sources": "Show all sources", diff --git a/homeassistant/components/doorbird/strings.json b/homeassistant/components/doorbird/strings.json index e710c587d5d..44fd07c405e 100644 --- a/homeassistant/components/doorbird/strings.json +++ b/homeassistant/components/doorbird/strings.json @@ -5,14 +5,15 @@ "data": { "events": "Comma separated list of events." }, - "description": "Add an comma separated event name for each event you wish to track. After entering them here, use the DoorBird app to assign them to a specific event. See the documentation at https://www.home-assistant.io/integrations/doorbird/#events. Example: somebody_pressed_the_button, motion" + "data_description": { + "events": "Add an comma separated event name for each event you wish to track. After entering them here, use the DoorBird app to assign them to a specific event.\n\nExample: somebody_pressed_the_button, motion" + } } } }, "config": { "step": { "user": { - "title": "Connect to the DoorBird", "data": { "password": "[%key:common::config_flow::data::password%]", "host": "[%key:common::config_flow::data::host%]", diff --git a/homeassistant/components/dunehd/strings.json b/homeassistant/components/dunehd/strings.json index 4c0d8879858..f7e12b39f16 100644 --- a/homeassistant/components/dunehd/strings.json +++ b/homeassistant/components/dunehd/strings.json @@ -2,8 +2,7 @@ "config": { "step": { "user": { - "title": "Dune HD", - "description": "Set up Dune HD integration. If you have problems with configuration go to: https://www.home-assistant.io/integrations/dunehd \n\nEnsure that your player is turned on.", + "description": "Ensure that your player is turned on.", "data": { "host": "[%key:common::config_flow::data::host%]" } diff --git a/homeassistant/components/freebox/strings.json b/homeassistant/components/freebox/strings.json index cb48e5322de..53a5fd59de3 100644 --- a/homeassistant/components/freebox/strings.json +++ b/homeassistant/components/freebox/strings.json @@ -2,7 +2,6 @@ "config": { "step": { "user": { - "title": "Freebox", "data": { "host": "[%key:common::config_flow::data::host%]", "port": "[%key:common::config_flow::data::port%]" diff --git a/homeassistant/components/gios/strings.json b/homeassistant/components/gios/strings.json index ef2fec9f84f..18db42b69c0 100644 --- a/homeassistant/components/gios/strings.json +++ b/homeassistant/components/gios/strings.json @@ -3,7 +3,6 @@ "step": { "user": { "title": "GIO\u015a (Polish Chief Inspectorate Of Environmental Protection)", - "description": "Set up GIO\u015a (Polish Chief Inspectorate Of Environmental Protection) air quality integration. If you need help with the configuration have a look here: https://www.home-assistant.io/integrations/gios", "data": { "name": "[%key:common::config_flow::data::name%]", "station_id": "ID of the measuring station" diff --git a/homeassistant/components/goalzero/strings.json b/homeassistant/components/goalzero/strings.json index 5147299b564..619b379c7a3 100644 --- a/homeassistant/components/goalzero/strings.json +++ b/homeassistant/components/goalzero/strings.json @@ -2,15 +2,13 @@ "config": { "step": { "user": { - "title": "Goal Zero Yeti", - "description": "First, you need to download the Goal Zero app: https://www.goalzero.com/product-features/yeti-app/\n\nFollow the instructions to connect your Yeti to your Wi-fi network. DHCP reservation on your router is recommended. If not set up, the device may become unavailable until Home Assistant detects the new ip address. Refer to your router's user manual.", + "description": "Please refer to the documentation to make sure all requirements are met.", "data": { "host": "[%key:common::config_flow::data::host%]", "name": "[%key:common::config_flow::data::name%]" } }, "confirm_discovery": { - "title": "Goal Zero Yeti", "description": "DHCP reservation on your router is recommended. If not set up, the device may become unavailable until Home Assistant detects the new ip address. Refer to your router's user manual." } }, diff --git a/homeassistant/components/honeywell/strings.json b/homeassistant/components/honeywell/strings.json index 1e20c0b1e81..8e085ad7e86 100644 --- a/homeassistant/components/honeywell/strings.json +++ b/homeassistant/components/honeywell/strings.json @@ -2,7 +2,6 @@ "config": { "step": { "user": { - "title": "Honeywell Total Connect Comfort (US)", "description": "Please enter the credentials used to log into mytotalconnectcomfort.com.", "data": { "username": "[%key:common::config_flow::data::username%]", @@ -17,7 +16,6 @@ "options": { "step": { "init": { - "title": "Honeywell Options", "description": "Additional Honeywell config options. Temperatures are set in Fahrenheit.", "data": { "away_cool_temperature": "Away cool temperature", diff --git a/homeassistant/components/insteon/strings.json b/homeassistant/components/insteon/strings.json index b0130910c5f..ca88b43956f 100644 --- a/homeassistant/components/insteon/strings.json +++ b/homeassistant/components/insteon/strings.json @@ -2,7 +2,6 @@ "config": { "step": { "user": { - "title": "Insteon", "description": "Select the Insteon modem type.", "data": { "modem_type": "Modem type." @@ -46,8 +45,6 @@ "options": { "step": { "init": { - "title": "Insteon", - "description": "Select an option to configure.", "data": { "change_hub_config": "Change the Hub configuration.", "add_override": "Add a device override.", @@ -57,7 +54,6 @@ } }, "change_hub_config": { - "title": "Insteon", "description": "Change the Insteon Hub connection information. You must restart Home Assistant after making this change. This does not change the configuration of the Hub itself. To change the configuration in the Hub use the Hub app.", "data": { "host": "[%key:common::config_flow::data::ip%]", @@ -67,7 +63,6 @@ } }, "add_override": { - "title": "Insteon", "description": "Add a device override.", "data": { "address": "Device address (i.e. 1a2b3c)", @@ -76,7 +71,6 @@ } }, "add_x10": { - "title": "Insteon", "description": "Change the Insteon Hub password.", "data": { "housecode": "Housecode (a - p)", @@ -85,15 +79,13 @@ "steps": "Dimmer steps (for light devices only, default 22)" } }, - "remove_override": { - "title": "Insteon", + "remove_override": { "description": "Remove a device override", "data": { "address": "Select a device address to remove" } }, - "remove_x10": { - "title": "Insteon", + "remove_x10": { "description": "Remove an X10 device", "data": { "address": "Select a device address to remove" diff --git a/homeassistant/components/iqvia/strings.json b/homeassistant/components/iqvia/strings.json index 7e16d3ae6e3..5dc0dea53d5 100644 --- a/homeassistant/components/iqvia/strings.json +++ b/homeassistant/components/iqvia/strings.json @@ -2,7 +2,6 @@ "config": { "step": { "user": { - "title": "IQVIA", "description": "Fill out your U.S. or Canadian ZIP code.", "data": { "zip_code": "ZIP Code" diff --git a/homeassistant/components/kaleidescape/strings.json b/homeassistant/components/kaleidescape/strings.json index 07c5d5bafd9..92b9c931acd 100644 --- a/homeassistant/components/kaleidescape/strings.json +++ b/homeassistant/components/kaleidescape/strings.json @@ -3,14 +3,12 @@ "flow_title": "{model} ({name})", "step": { "user": { - "title": "Kaleidescape Setup", "data": { "host": "[%key:common::config_flow::data::host%]" } }, "discovery_confirm": { - "title": "Kaleidescape", - "description": "Do you want to set up the {model} player named {name}?" + "description": "Do you want to set up the {model} player named {name}?" } }, "abort": { @@ -24,4 +22,4 @@ "unsupported": "Unsupported device" } } -} \ No newline at end of file +} diff --git a/homeassistant/components/meteo_france/strings.json b/homeassistant/components/meteo_france/strings.json index 9cb68a0ca73..3ff8d4308a3 100644 --- a/homeassistant/components/meteo_france/strings.json +++ b/homeassistant/components/meteo_france/strings.json @@ -2,14 +2,12 @@ "config": { "step": { "user": { - "title": "M\u00e9t\u00e9o-France", "description": "Enter the postal code (only for France, recommended) or city name", "data": { "city": "City" } }, "cities": { - "title": "M\u00e9t\u00e9o-France", "description": "Choose your city from the list", "data": { "city": "City" diff --git a/homeassistant/components/meteoclimatic/strings.json b/homeassistant/components/meteoclimatic/strings.json index 2353c22c7cc..5aedf7da01a 100644 --- a/homeassistant/components/meteoclimatic/strings.json +++ b/homeassistant/components/meteoclimatic/strings.json @@ -2,10 +2,11 @@ "config": { "step": { "user": { - "title": "Meteoclimatic", - "description": "Enter the Meteoclimatic station code (e.g., ESCAT4300000043206B)", "data": { "code": "Station code" + }, + "data_description": { + "code": "Looks like ESCAT4300000043206B" } } }, @@ -17,4 +18,4 @@ "not_found": "[%key:common::config_flow::abort::no_devices_found%]" } } -} \ No newline at end of file +} diff --git a/homeassistant/components/modem_callerid/strings.json b/homeassistant/components/modem_callerid/strings.json index 17359128528..bb6ac1879da 100644 --- a/homeassistant/components/modem_callerid/strings.json +++ b/homeassistant/components/modem_callerid/strings.json @@ -1,26 +1,24 @@ { - "config": { - "step": { - "user": { - "title": "Phone Modem", - "description": "This is an integration for landline calls using a CX93001 voice modem. This can retrieve caller ID information with an option to reject an incoming call.", - "data": { - "name": "[%key:common::config_flow::data::name%]", - "port": "[%key:common::config_flow::data::port%]" - } - }, - "usb_confirm": { - "title": "Phone Modem", - "description": "This is an integration for landline calls using a CX93001 voice modem. This can retrieve caller ID information with an option to reject an incoming call." + "config": { + "step": { + "user": { + "description": "This is an integration for landline calls using a CX93001 voice modem. This can retrieve caller ID information with an option to reject an incoming call.", + "data": { + "name": "[%key:common::config_flow::data::name%]", + "port": "[%key:common::config_flow::data::port%]" } }, - "error": { - "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]" - }, - "abort": { - "already_configured": "[%key:common::config_flow::abort::already_configured_device%]", - "already_in_progress": "[%key:common::config_flow::abort::already_in_progress%]", - "no_devices_found": "No remaining devices found" + "usb_confirm": { + "description": "This is an integration for landline calls using a CX93001 voice modem. This can retrieve caller ID information with an option to reject an incoming call." } + }, + "error": { + "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]" + }, + "abort": { + "already_configured": "[%key:common::config_flow::abort::already_configured_device%]", + "already_in_progress": "[%key:common::config_flow::abort::already_in_progress%]", + "no_devices_found": "No remaining devices found" } - } \ No newline at end of file + } +} diff --git a/homeassistant/components/motion_blinds/strings.json b/homeassistant/components/motion_blinds/strings.json index 627ae72ffe3..9b64da7add4 100644 --- a/homeassistant/components/motion_blinds/strings.json +++ b/homeassistant/components/motion_blinds/strings.json @@ -2,14 +2,12 @@ "config": { "step": { "user": { - "title": "Motion Blinds", "description": "Connect to your Motion Gateway, if the IP address is not set, auto-discovery is used", "data": { "host": "[%key:common::config_flow::data::ip%]" } }, "connect": { - "title": "Motion Blinds", "description": "You will need the 16 character API Key, see https://www.home-assistant.io/integrations/motion_blinds/#retrieving-the-key for instructions", "data": { "api_key": "[%key:common::config_flow::data::api_key%]", @@ -37,8 +35,6 @@ "options": { "step": { "init": { - "title": "Motion Blinds", - "description": "Specify optional settings", "data": { "wait_for_push": "Wait for multicast push on update" } @@ -46,6 +42,3 @@ } } } - - - diff --git a/homeassistant/components/nfandroidtv/strings.json b/homeassistant/components/nfandroidtv/strings.json index 5940f86a406..fdc9f01d343 100644 --- a/homeassistant/components/nfandroidtv/strings.json +++ b/homeassistant/components/nfandroidtv/strings.json @@ -2,8 +2,7 @@ "config": { "step": { "user": { - "title": "Notifications for Android TV / Fire TV", - "description": "This integration requires the Notifications for Android TV app.\n\nFor Android TV: https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google\nFor Fire TV: https://www.amazon.com/Christian-Fees-Notifications-for-Fire/dp/B00OESCXEK\n\nYou should set up either DHCP reservation on your router (refer to your router's user manual) or a static IP address on the device. If not, the device will eventually become unavailable.", + "description": "Please refer to the documentation to make sure all requirements are met.", "data": { "host": "[%key:common::config_flow::data::host%]", "name": "[%key:common::config_flow::data::name%]" diff --git a/homeassistant/components/opentherm_gw/strings.json b/homeassistant/components/opentherm_gw/strings.json index ed9cf05cae8..f53ffeda6f6 100644 --- a/homeassistant/components/opentherm_gw/strings.json +++ b/homeassistant/components/opentherm_gw/strings.json @@ -2,7 +2,6 @@ "config": { "step": { "init": { - "title": "OpenTherm Gateway", "data": { "name": "[%key:common::config_flow::data::name%]", "device": "Path or URL", @@ -19,7 +18,6 @@ "options": { "step": { "init": { - "description": "Options for the OpenTherm Gateway", "data": { "floor_temperature": "Floor Temperature", "read_precision": "Read Precision", diff --git a/homeassistant/components/openweathermap/strings.json b/homeassistant/components/openweathermap/strings.json index 520cf1181ff..12d5c3e21f6 100644 --- a/homeassistant/components/openweathermap/strings.json +++ b/homeassistant/components/openweathermap/strings.json @@ -1,35 +1,34 @@ { - "config": { - "abort": { - "already_configured": "[%key:common::config_flow::abort::already_configured_location%]" - }, - "error": { - "invalid_api_key": "[%key:common::config_flow::error::invalid_api_key%]", - "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]" - }, - "step": { - "user": { - "data": { - "api_key": "[%key:common::config_flow::data::api_key%]", - "language": "Language", - "latitude": "[%key:common::config_flow::data::latitude%]", - "longitude": "[%key:common::config_flow::data::longitude%]", - "mode": "[%key:common::config_flow::data::mode%]", - "name": "Name of the integration" - }, - "description": "Set up OpenWeatherMap integration. To generate API key go to https://openweathermap.org/appid", - "title": "OpenWeatherMap" - } - } + "config": { + "abort": { + "already_configured": "[%key:common::config_flow::abort::already_configured_location%]" }, - "options": { - "step": { - "init": { - "data": { - "language": "Language", - "mode": "[%key:common::config_flow::data::mode%]" - } - } - } + "error": { + "invalid_api_key": "[%key:common::config_flow::error::invalid_api_key%]", + "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]" + }, + "step": { + "user": { + "data": { + "api_key": "[%key:common::config_flow::data::api_key%]", + "language": "Language", + "latitude": "[%key:common::config_flow::data::latitude%]", + "longitude": "[%key:common::config_flow::data::longitude%]", + "mode": "[%key:common::config_flow::data::mode%]", + "name": "Name" + }, + "description": "To generate API key go to https://openweathermap.org/appid" + } } + }, + "options": { + "step": { + "init": { + "data": { + "language": "Language", + "mode": "[%key:common::config_flow::data::mode%]" + } + } + } + } } diff --git a/homeassistant/components/peco/strings.json b/homeassistant/components/peco/strings.json index 2d195ed5d22..f89948bb268 100644 --- a/homeassistant/components/peco/strings.json +++ b/homeassistant/components/peco/strings.json @@ -2,7 +2,6 @@ "config": { "step": { "user": { - "title": "PECO Outage Counter", "description": "Please choose your county below.", "data": { "county": "County" @@ -13,4 +12,4 @@ "already_configured": "[%key:common::config_flow::abort::already_configured_service%]" } } -} \ No newline at end of file +} diff --git a/homeassistant/components/plex/strings.json b/homeassistant/components/plex/strings.json index c16a84b1cd8..f08b6f59862 100644 --- a/homeassistant/components/plex/strings.json +++ b/homeassistant/components/plex/strings.json @@ -3,11 +3,9 @@ "flow_title": "{name} ({host})", "step": { "user": { - "title": "Plex Media Server", "description": "Continue to [plex.tv](https://plex.tv) to link a Plex server." }, "user_advanced": { - "title": "Plex Media Server", "data": { "setup_method": "Setup method" } diff --git a/homeassistant/components/poolsense/strings.json b/homeassistant/components/poolsense/strings.json index 71b30e0bf77..2ddf3ee77e8 100644 --- a/homeassistant/components/poolsense/strings.json +++ b/homeassistant/components/poolsense/strings.json @@ -2,8 +2,6 @@ "config": { "step": { "user": { - "title": "PoolSense", - "description": "[%key:common::config_flow::description::confirm_setup%]", "data": { "email": "[%key:common::config_flow::data::email%]", "password": "[%key:common::config_flow::data::password%]" diff --git a/homeassistant/components/ps4/strings.json b/homeassistant/components/ps4/strings.json index f2a59830b59..b44862c527b 100644 --- a/homeassistant/components/ps4/strings.json +++ b/homeassistant/components/ps4/strings.json @@ -2,25 +2,26 @@ "config": { "step": { "creds": { - "title": "PlayStation 4", "description": "Credentials needed. Press 'Submit' and then in the PS4 2nd Screen App, refresh devices and select the 'Home-Assistant' device to continue." }, "mode": { - "title": "PlayStation 4", - "description": "Select mode for configuration. The [%key:common::config_flow::data::ip%] field can be left blank if selecting Auto Discovery, as devices will be automatically discovered.", "data": { "mode": "Config Mode", "ip_address": "[%key:common::config_flow::data::ip%] (Leave empty if using Auto Discovery)." + }, + "data_description": { + "ip_address": "Leave blank if selecting auto-discovery." } }, "link": { - "title": "PlayStation 4", - "description": "Enter your PlayStation 4 information. For [%key:common::config_flow::data::pin%], navigate to 'Settings' on your PlayStation 4 console. Then navigate to 'Mobile App Connection Settings' and select 'Add Device'. Enter the [%key:common::config_flow::data::pin%] that is displayed. Refer to the [documentation](https://www.home-assistant.io/components/ps4/) for additional info.", "data": { "region": "Region", "name": "[%key:common::config_flow::data::name%]", "code": "[%key:common::config_flow::data::pin%]", "ip_address": "[%key:common::config_flow::data::ip%]" + }, + "data_description": { + "code": "Navigate to 'Settings' on your PlayStation 4 console. Then navigate to 'Mobile App Connection Settings' and select 'Add Device' to get the pin." } } }, diff --git a/homeassistant/components/pvpc_hourly_pricing/strings.json b/homeassistant/components/pvpc_hourly_pricing/strings.json index 89da917c8ea..a008ef9f4da 100644 --- a/homeassistant/components/pvpc_hourly_pricing/strings.json +++ b/homeassistant/components/pvpc_hourly_pricing/strings.json @@ -2,8 +2,6 @@ "config": { "step": { "user": { - "title": "Sensor setup", - "description": "This sensor uses official API to get [hourly pricing of electricity (PVPC)](https://www.esios.ree.es/es/pvpc) in Spain.\nFor more precise explanation visit the [integration docs](https://www.home-assistant.io/integrations/pvpc_hourly_pricing/).", "data": { "name": "Sensor Name", "tariff": "Applicable tariff by geographic zone", @@ -19,8 +17,6 @@ "options": { "step": { "init": { - "title": "Sensor setup", - "description": "This sensor uses official API to get [hourly pricing of electricity (PVPC)](https://www.esios.ree.es/es/pvpc) in Spain.\nFor more precise explanation visit the [integration docs](https://www.home-assistant.io/integrations/pvpc_hourly_pricing/).", "data": { "tariff": "Applicable tariff by geographic zone", "power": "Contracted power (kW)", diff --git a/homeassistant/components/roku/strings.json b/homeassistant/components/roku/strings.json index 68cbe528e87..04c504def03 100644 --- a/homeassistant/components/roku/strings.json +++ b/homeassistant/components/roku/strings.json @@ -9,7 +9,6 @@ } }, "discovery_confirm": { - "title": "Roku", "description": "Do you want to set up {name}?" } }, diff --git a/homeassistant/components/sentry/strings.json b/homeassistant/components/sentry/strings.json index 71196d52f8d..efcdb631f3c 100644 --- a/homeassistant/components/sentry/strings.json +++ b/homeassistant/components/sentry/strings.json @@ -2,10 +2,8 @@ "config": { "step": { "user": { - "title": "Sentry", - "description": "Enter your Sentry DSN", "data": { - "dsn": "DSN" + "dsn": "Sentry DSN" } } }, diff --git a/homeassistant/components/synology_dsm/strings.json b/homeassistant/components/synology_dsm/strings.json index 501cbfb5fff..6b13226aaee 100644 --- a/homeassistant/components/synology_dsm/strings.json +++ b/homeassistant/components/synology_dsm/strings.json @@ -3,7 +3,6 @@ "flow_title": "{name} ({host})", "step": { "user": { - "title": "Synology DSM", "data": { "host": "[%key:common::config_flow::data::host%]", "port": "[%key:common::config_flow::data::port%]", @@ -20,7 +19,6 @@ } }, "link": { - "title": "Synology DSM", "description": "Do you want to setup {name} ({host})?", "data": { "ssl": "[%key:common::config_flow::data::ssl%]", diff --git a/homeassistant/components/tasmota/strings.json b/homeassistant/components/tasmota/strings.json index 3d32b54b95d..2a23912b80c 100644 --- a/homeassistant/components/tasmota/strings.json +++ b/homeassistant/components/tasmota/strings.json @@ -5,8 +5,6 @@ "description": "Do you want to set up Tasmota?" }, "config": { - "title": "Tasmota", - "description": "Please enter the Tasmota configuration.", "data": { "discovery_prefix": "Discovery topic prefix" } diff --git a/homeassistant/components/tibber/strings.json b/homeassistant/components/tibber/strings.json index 34e218741ca..2876bf5bd02 100644 --- a/homeassistant/components/tibber/strings.json +++ b/homeassistant/components/tibber/strings.json @@ -13,8 +13,7 @@ "data": { "access_token": "[%key:common::config_flow::data::access_token%]" }, - "description": "Enter your access token from https://developer.tibber.com/settings/accesstoken", - "title": "Tibber" + "description": "Enter your access token from https://developer.tibber.com/settings/accesstoken" } } } diff --git a/homeassistant/components/totalconnect/strings.json b/homeassistant/components/totalconnect/strings.json index 63505c2446c..64ca1beafd8 100644 --- a/homeassistant/components/totalconnect/strings.json +++ b/homeassistant/components/totalconnect/strings.json @@ -2,7 +2,6 @@ "config": { "step": { "user": { - "title": "Total Connect", "data": { "username": "[%key:common::config_flow::data::username%]", "password": "[%key:common::config_flow::data::password%]" diff --git a/homeassistant/components/twentemilieu/strings.json b/homeassistant/components/twentemilieu/strings.json index 369484a6392..d9b59b2d02c 100644 --- a/homeassistant/components/twentemilieu/strings.json +++ b/homeassistant/components/twentemilieu/strings.json @@ -2,7 +2,6 @@ "config": { "step": { "user": { - "title": "Twente Milieu", "description": "Set up Twente Milieu providing waste collection information on your address.", "data": { "post_code": "Postal code", @@ -15,6 +14,8 @@ "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]", "invalid_address": "Address not found in Twente Milieu service area." }, - "abort": { "already_configured": "[%key:common::config_flow::abort::already_configured_location%]" } + "abort": { + "already_configured": "[%key:common::config_flow::abort::already_configured_location%]" + } } } diff --git a/homeassistant/components/twinkly/strings.json b/homeassistant/components/twinkly/strings.json index 6dc7cc2eb97..630497ef28c 100644 --- a/homeassistant/components/twinkly/strings.json +++ b/homeassistant/components/twinkly/strings.json @@ -2,8 +2,6 @@ "config": { "step": { "user": { - "title": "Twinkly", - "description": "Set up your Twinkly led string", "data": { "host": "[%key:common::config_flow::data::host%]" } diff --git a/homeassistant/components/vallox/config_flow.py b/homeassistant/components/vallox/config_flow.py index 1658a987263..d30c8641d2c 100644 --- a/homeassistant/components/vallox/config_flow.py +++ b/homeassistant/components/vallox/config_flow.py @@ -13,7 +13,6 @@ from homeassistant.const import CONF_HOST, CONF_NAME from homeassistant.core import HomeAssistant from homeassistant.data_entry_flow import FlowResult from homeassistant.exceptions import HomeAssistantError -from homeassistant.loader import async_get_integration from homeassistant.util.network import is_ip_address from .const import DEFAULT_NAME, DOMAIN @@ -83,14 +82,9 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): self, user_input: dict[str, Any] | None = None ) -> FlowResult: """Handle the initial step.""" - integration = await async_get_integration(self.hass, DOMAIN) - if user_input is None: return self.async_show_form( step_id="user", - description_placeholders={ - "integration_docs_url": integration.documentation - }, data_schema=STEP_USER_DATA_SCHEMA, ) @@ -120,9 +114,6 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): return self.async_show_form( step_id="user", - description_placeholders={ - "integration_docs_url": integration.documentation - }, data_schema=STEP_USER_DATA_SCHEMA, errors=errors, ) diff --git a/homeassistant/components/vallox/strings.json b/homeassistant/components/vallox/strings.json index dd341228db8..cada5a7febd 100644 --- a/homeassistant/components/vallox/strings.json +++ b/homeassistant/components/vallox/strings.json @@ -2,8 +2,6 @@ "config": { "step": { "user": { - "title": "Vallox", - "description": "Set up the Vallox integration. If you have problems with configuration go to {integration_docs_url}.", "data": { "host": "[%key:common::config_flow::data::host%]" } diff --git a/homeassistant/components/vera/strings.json b/homeassistant/components/vera/strings.json index 66958f44a62..50d60f9a8ab 100644 --- a/homeassistant/components/vera/strings.json +++ b/homeassistant/components/vera/strings.json @@ -5,12 +5,13 @@ }, "step": { "user": { - "title": "Setup Vera controller", - "description": "Provide a Vera controller URL below. It should look like this: http://192.168.1.161:3480.", "data": { "vera_controller_url": "Controller URL", "lights": "Vera switch device ids to treat as lights in Home Assistant.", "exclude": "Vera device ids to exclude from Home Assistant." + }, + "data_description": { + "vera_controller_url": "It should look like this: http://192.168.1.161:3480" } } } diff --git a/homeassistant/components/vilfo/strings.json b/homeassistant/components/vilfo/strings.json index c9b8882c264..6577c99456c 100644 --- a/homeassistant/components/vilfo/strings.json +++ b/homeassistant/components/vilfo/strings.json @@ -2,8 +2,6 @@ "config": { "step": { "user": { - "title": "Connect to the Vilfo Router", - "description": "Set up the Vilfo Router integration. You need your Vilfo Router hostname/IP and an API access token. For additional information on this integration and how to get those details, visit: https://www.home-assistant.io/integrations/vilfo", "data": { "host": "[%key:common::config_flow::data::host%]", "access_token": "[%key:common::config_flow::data::access_token%]" diff --git a/homeassistant/components/wilight/strings.json b/homeassistant/components/wilight/strings.json index e267a8e5327..0449a900c29 100644 --- a/homeassistant/components/wilight/strings.json +++ b/homeassistant/components/wilight/strings.json @@ -3,8 +3,7 @@ "flow_title": "{name}", "step": { "confirm": { - "title": "WiLight", - "description": "Do you want to set up WiLight {name}?\n\n It supports: {components}" + "description": "The following components are supported: {components}" } }, "abort": { diff --git a/homeassistant/components/xiaomi_aqara/strings.json b/homeassistant/components/xiaomi_aqara/strings.json index b1675992174..66ad4d01354 100644 --- a/homeassistant/components/xiaomi_aqara/strings.json +++ b/homeassistant/components/xiaomi_aqara/strings.json @@ -3,8 +3,7 @@ "flow_title": "{name}", "step": { "user": { - "title": "Xiaomi Aqara Gateway", - "description": "Connect to your Xiaomi Aqara Gateway, if the IP and MAC addresses are left empty, auto-discovery is used", + "description": "If the IP and MAC addresses are left empty, auto-discovery is used", "data": { "interface": "The network interface to use", "host": "[%key:common::config_flow::data::ip%] (optional)", @@ -12,7 +11,7 @@ } }, "settings": { - "title": "Xiaomi Aqara Gateway, optional settings", + "title": "Optional settings", "description": "The key (password) can be retrieved using this tutorial: https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz. If the key is not provided only sensors will be accessible", "data": { "key": "The key of your gateway", @@ -20,8 +19,7 @@ } }, "select": { - "title": "Select the Xiaomi Aqara Gateway that you wish to connect", - "description": "Run the setup again if you want to connect additional gateways", + "description": "Select the Xiaomi Aqara Gateway that you wish to connect", "data": { "select_ip": "[%key:common::config_flow::data::ip%]" } diff --git a/homeassistant/components/xiaomi_miio/strings.json b/homeassistant/components/xiaomi_miio/strings.json index 1331d22e933..e359f54cc5a 100644 --- a/homeassistant/components/xiaomi_miio/strings.json +++ b/homeassistant/components/xiaomi_miio/strings.json @@ -28,30 +28,25 @@ "cloud_country": "Cloud server country", "manual": "Configure manually (not recommended)" }, - "description": "Log in to the Xiaomi Miio cloud, see https://www.openhab.org/addons/bindings/miio/#country-servers for the cloud server to use.", - "title": "Connect to a Xiaomi Miio Device or Xiaomi Gateway" + "description": "Log in to the Xiaomi Miio cloud, see https://www.openhab.org/addons/bindings/miio/#country-servers for the cloud server to use." }, "select": { "data": { "select_device": "Miio device" }, - "description": "Select the Xiaomi Miio device to setup.", - "title": "Connect to a Xiaomi Miio Device or Xiaomi Gateway" + "description": "Select the Xiaomi Miio device to setup." }, "manual": { "data": { "host": "[%key:common::config_flow::data::ip%]", "token": "[%key:common::config_flow::data::api_token%]" }, - "description": "You will need the 32 character [%key:common::config_flow::data::api_token%], see https://www.home-assistant.io/integrations/xiaomi_miio#retrieving-the-access-token for instructions. Please note, that this [%key:common::config_flow::data::api_token%] is different from the key used by the Xiaomi Aqara integration.", - "title": "Connect to a Xiaomi Miio Device or Xiaomi Gateway" + "description": "You will need the 32 character [%key:common::config_flow::data::api_token%], see https://www.home-assistant.io/integrations/xiaomi_miio#retrieving-the-access-token for instructions. Please note, that this [%key:common::config_flow::data::api_token%] is different from the key used by the Xiaomi Aqara integration." }, "connect": { "data": { "model": "Device model" - }, - "description": "Manually select the device model from the supported models.", - "title": "Connect to a Xiaomi Miio Device or Xiaomi Gateway" + } } } }, @@ -61,8 +56,6 @@ }, "step": { "init": { - "title": "Xiaomi Miio", - "description": "Specify optional settings", "data": { "cloud_subdevices": "Use cloud to get connected subdevices" } diff --git a/script/hassfest/translations.py b/script/hassfest/translations.py index 38392832261..0dcdbc133a6 100644 --- a/script/hassfest/translations.py +++ b/script/hassfest/translations.py @@ -26,6 +26,7 @@ ALLOW_NAME_TRANSLATION = { "cert_expiry", "cpuspeed", "emulated_roku", + "faa_delays", "garages_amsterdam", "google_travel_time", "homekit_controller", @@ -50,6 +51,16 @@ MOVED_TRANSLATIONS_DIRECTORY_MSG = ( ) +def allow_name_translation(integration: Integration): + """Validate that the translation name is not the same as the integration name.""" + # Only enforce for core because custom integrations can't be + # added to allow list. + return integration.core and ( + integration.domain in ALLOW_NAME_TRANSLATION + or integration.quality_scale == "internal" + ) + + def check_translations_directory_name(integration: Integration) -> None: """Check that the correct name is used for the translations directory.""" legacy_translations = integration.path / ".translations" @@ -156,6 +167,21 @@ def gen_data_entry_schema( validators.append(validate_description_set) + if not allow_name_translation(integration): + + def name_validator(value): + """Validate name.""" + for step_id, info in value["step"].items(): + if info.get("title") == integration.name: + raise vol.Invalid( + f"Do not set title of step {step_id} if it's a brand name " + "or add exception to ALLOW_NAME_TRANSLATION" + ) + + return value + + validators.append(name_validator) + return vol.All(*validators) @@ -315,14 +341,9 @@ def validate_translation_file(config: Config, integration: Integration, all_stri if strings_file.name == "strings.json": find_references(strings, name, references) - if ( - integration.domain not in ALLOW_NAME_TRANSLATION - # Only enforce for core because custom integratinos can't be - # added to allow list. - and integration.core - and strings.get("title") == integration.name - and integration.quality_scale != "internal" - ): + if strings.get( + "title" + ) == integration.name and not allow_name_translation(integration): integration.add_error( "translations", "Don't specify title in translation strings if it's a brand name "