mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 01:08:12 +00:00
Ban brand name translations as step titles (#68801)
This commit is contained in:
parent
e80933d6c7
commit
5eee600fa8
@ -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"
|
||||
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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%]",
|
||||
|
@ -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%]",
|
||||
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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",
|
||||
|
@ -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%]"
|
||||
}
|
||||
|
@ -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"
|
||||
|
@ -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",
|
||||
|
@ -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%]",
|
||||
|
@ -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%]"
|
||||
}
|
||||
|
@ -2,7 +2,6 @@
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"title": "Freebox",
|
||||
"data": {
|
||||
"host": "[%key:common::config_flow::data::host%]",
|
||||
"port": "[%key:common::config_flow::data::port%]"
|
||||
|
@ -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"
|
||||
|
@ -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."
|
||||
}
|
||||
},
|
||||
|
@ -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",
|
||||
|
@ -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"
|
||||
|
@ -2,7 +2,6 @@
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"title": "IQVIA",
|
||||
"description": "Fill out your U.S. or Canadian ZIP code.",
|
||||
"data": {
|
||||
"zip_code": "ZIP Code"
|
||||
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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"
|
||||
|
@ -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%]"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -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%]"
|
||||
|
@ -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",
|
||||
|
@ -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%]"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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%]"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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"
|
||||
}
|
||||
|
@ -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%]"
|
||||
|
@ -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."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -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)",
|
||||
|
@ -9,7 +9,6 @@
|
||||
}
|
||||
},
|
||||
"discovery_confirm": {
|
||||
"title": "Roku",
|
||||
"description": "Do you want to set up {name}?"
|
||||
}
|
||||
},
|
||||
|
@ -2,10 +2,8 @@
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"title": "Sentry",
|
||||
"description": "Enter your Sentry DSN",
|
||||
"data": {
|
||||
"dsn": "DSN"
|
||||
"dsn": "Sentry DSN"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -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%]",
|
||||
|
@ -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"
|
||||
}
|
||||
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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%]"
|
||||
|
@ -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%]"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,8 +2,6 @@
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"title": "Twinkly",
|
||||
"description": "Set up your Twinkly led string",
|
||||
"data": {
|
||||
"host": "[%key:common::config_flow::data::host%]"
|
||||
}
|
||||
|
@ -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,
|
||||
)
|
||||
|
@ -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%]"
|
||||
}
|
||||
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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%]"
|
||||
|
@ -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": {
|
||||
|
@ -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%]"
|
||||
}
|
||||
|
@ -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"
|
||||
}
|
||||
|
@ -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 "
|
||||
|
Loading…
x
Reference in New Issue
Block a user