Ban brand name translations as step titles (#68801)

This commit is contained in:
Paulus Schoutsen 2022-03-28 10:41:39 -07:00 committed by GitHub
parent e80933d6c7
commit 5eee600fa8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
46 changed files with 152 additions and 213 deletions

View File

@ -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"

View File

@ -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"
}
}
}
}
}

View File

@ -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%]",

View File

@ -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%]",

View File

@ -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"
}
}
}
}
}

View File

@ -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",

View File

@ -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%]"
}

View File

@ -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"

View File

@ -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",

View File

@ -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%]",

View File

@ -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%]"
}

View File

@ -2,7 +2,6 @@
"config": {
"step": {
"user": {
"title": "Freebox",
"data": {
"host": "[%key:common::config_flow::data::host%]",
"port": "[%key:common::config_flow::data::port%]"

View File

@ -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"

View File

@ -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."
}
},

View File

@ -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",

View File

@ -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"

View File

@ -2,7 +2,6 @@
"config": {
"step": {
"user": {
"title": "IQVIA",
"description": "Fill out your U.S. or Canadian ZIP code.",
"data": {
"zip_code": "ZIP Code"

View File

@ -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"
}
}
}
}

View File

@ -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"

View File

@ -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%]"
}
}
}
}

View File

@ -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"
}
}
}
}

View File

@ -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 @@
}
}
}

View File

@ -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%]"

View File

@ -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",

View File

@ -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%]"
}
}
}
}
}

View File

@ -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%]"
}
}
}
}

View File

@ -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"
}

View File

@ -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%]"

View File

@ -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."
}
}
},

View File

@ -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)",

View File

@ -9,7 +9,6 @@
}
},
"discovery_confirm": {
"title": "Roku",
"description": "Do you want to set up {name}?"
}
},

View File

@ -2,10 +2,8 @@
"config": {
"step": {
"user": {
"title": "Sentry",
"description": "Enter your Sentry DSN",
"data": {
"dsn": "DSN"
"dsn": "Sentry DSN"
}
}
},

View File

@ -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%]",

View File

@ -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"
}

View File

@ -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"
}
}
}

View File

@ -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%]"

View File

@ -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%]"
}
}
}

View File

@ -2,8 +2,6 @@
"config": {
"step": {
"user": {
"title": "Twinkly",
"description": "Set up your Twinkly led string",
"data": {
"host": "[%key:common::config_flow::data::host%]"
}

View File

@ -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,
)

View File

@ -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%]"
}

View File

@ -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"
}
}
}

View File

@ -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%]"

View File

@ -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": {

View File

@ -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%]"
}

View File

@ -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"
}

View File

@ -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 "