Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
12da814
Bump aiohomekit to 0.2.54 (#42532)
Jc2k Oct 28, 2020
3151893
Cleanup RainMachine (#42544)
bachya Oct 28, 2020
026e006
[ci skip] Translation update
homeassistant Oct 29, 2020
3fb091c
Deprecate YAML config for Flu Near You (0.119 removal) (#42535)
bachya Oct 29, 2020
2a795c0
Add guppy3 memory profile to Profiler integration (#42435)
hunterjm Oct 29, 2020
a2f2a42
Fix adding Virtual DSM system in synology_dsm (#42523)
mib1185 Oct 29, 2020
0ba1298
Remove YAML config for directv (#41961)
ctalkington Oct 29, 2020
708423e
Remove YAML config for roku (#41960)
ctalkington Oct 29, 2020
6b29648
Use common strings in twilio config flow (#42477)
springstan Oct 29, 2020
c8f00a7
Gather all collection listeners and changes at the same time (#42497)
bdraco Oct 29, 2020
bebbafd
Fix RMV giving wrong data and ignoring given parameters (#42561)
cgtobi Oct 29, 2020
1215100
Fix MQTT template light (#42598)
emontnemery Oct 29, 2020
7027b01
Fix broken time trigger test (#42606)
balloob Oct 29, 2020
a396f8f
Add telegram_sent event (#41159)
NikoM87 Oct 29, 2020
8eb89cd
Fix flapping event template test (#42614)
bdraco Oct 29, 2020
7f1683c
Remove legacy template extract_entities (#42601)
bdraco Oct 29, 2020
153f05a
Bump hatasmota to 0.0.25 (#42605)
emontnemery Oct 29, 2020
25ac0d2
Update frontend to 20201021.4 (#42590)
bramkragten Oct 29, 2020
c403534
Fix inexact version of pylacrosse (#42610)
onkelbeh Oct 29, 2020
3a11e2c
Update greeclimate to 0.9.2 (#42616)
cmroche Oct 29, 2020
b9d04b9
[ci skip] Translation update
homeassistant Oct 30, 2020
f78e75e
Properly unload listener for AirVisual config entry updates (#42583)
bachya Oct 30, 2020
2bbd2a6
Reduce complexity of storage writes (#42576)
bdraco Oct 30, 2020
8a403cd
Defer esphome persistent storage writes until after startup (#42600)
bdraco Oct 30, 2020
f470d1e
Enable polling for DSMR derivative entity (#42524)
RobBie1221 Oct 30, 2020
6011756
Rewrite mfi unittest tests to pytest (#42510)
adriansuwala Oct 30, 2020
df552f0
Purge unused constants from template helper (#42618)
bdraco Oct 30, 2020
b228ffc
Add missing config flow translation key to script scaffold (#42621)
allenporter Oct 30, 2020
62b5279
Add WS command to remove a Tasmota device (#42266)
emontnemery Oct 30, 2020
b3d7f94
Fix typo in Flunearyou config flow (#42617)
SNoof85 Oct 30, 2020
8c239f2
Fix geo_rss_events import statement (#42629)
exxamalte Oct 30, 2020
2dc5c4d
Bump hatasmota to 0.0.26 (#42613)
effelle Oct 30, 2020
92379ad
Use list literal without using dict.keys() (#42573)
springstan Oct 30, 2020
b302534
Bump pycfdns to 1.2.1 (#42634)
ludeeus Oct 30, 2020
251d828
Revert "Bump hatasmota to 0.0.26 (#42613)" (#42641)
emontnemery Oct 30, 2020
f920863
Fix on/off button (#42443)
felipediel Oct 30, 2020
c894476
Fix Fibaro HC2 climate device missing temperature (#42627)
airthusiast Oct 30, 2020
6e9b0b4
Bump hatasmota to 0.0.26 (#42644)
emontnemery Oct 30, 2020
73eaef0
Make sure Tasmota status sensors are disabled (#42643)
emontnemery Oct 30, 2020
2b24b96
Bump ElkM1 library to 0.8.7 (#42645)
Oct 30, 2020
036a8b5
Small cleanup to IQVIA DataUpdateCoordinator logic (#42642)
bachya Oct 30, 2020
ee528e1
Add hassio service descriptions (#42597)
Petro31 Oct 30, 2020
c7ba234
[ci skip] Translation update
homeassistant Oct 31, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion homeassistant/auth/providers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ async def async_step_select_mfa_module(
errors["base"] = "invalid_auth_module"

if len(self.available_mfa_modules) == 1:
self._auth_module_id = list(self.available_mfa_modules.keys())[0]
self._auth_module_id = list(self.available_mfa_modules)[0]
return await self.async_step_mfa()

return self.async_show_form(
Expand Down
22 changes: 22 additions & 0 deletions homeassistant/components/advantage_air/translations/fr.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"config": {
"abort": {
"already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9"
},
"error": {
"cannot_connect": "\u00c9chec de connexion"
},
"flow_title": "Configuration d\u2019Advantage Air",
"step": {
"user": {
"data": {
"ip_address": "Adresse IP",
"port": "Port"
},
"description": "Connectez-vous \u00e0 l'API de votre tablette murale Advantage Air.",
"title": "Connecter"
}
}
},
"title": "Advantage Air"
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
{
"config": {
"error": {
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
},
"step": {
"user": {
"data": {
Expand Down
1 change: 1 addition & 0 deletions homeassistant/components/agent_dvr/translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
},
"error": {
"already_in_progress": "La configuration de l'appareil est d\u00e9j\u00e0 en cours.",
"cannot_connect": "\u00c9chec de connexion",
"device_unavailable": "L'appareil n'est pas disponible"
},
"step": {
Expand Down
17 changes: 17 additions & 0 deletions homeassistant/components/airly/translations/zh-Hans.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"config": {
"error": {
"auth": "API \u5bc6\u7801\u9519\u8bef"
},
"step": {
"user": {
"data": {
"api_key": "API \u5bc6\u7801",
"latitude": "\u7eac\u5ea6",
"longitude": "\u7ecf\u5ea6",
"name": "\u540d\u79f0"
}
}
}
}
}
15 changes: 11 additions & 4 deletions homeassistant/components/airvisual/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@

PLATFORMS = ["air_quality", "sensor"]

DATA_LISTENER = "listener"

DEFAULT_ATTRIBUTION = "Data provided by AirVisual"
DEFAULT_NODE_PRO_UPDATE_INTERVAL = timedelta(minutes=1)
DEFAULT_OPTIONS = {CONF_SHOW_ON_MAP: True}
Expand Down Expand Up @@ -151,7 +153,7 @@ def async_sync_geo_coordinator_update_intervals(hass, api_key):

async def async_setup(hass, config):
"""Set up the AirVisual component."""
hass.data[DOMAIN] = {DATA_COORDINATOR: {}}
hass.data[DOMAIN] = {DATA_COORDINATOR: {}, DATA_LISTENER: {}}

if DOMAIN not in config:
return True
Expand Down Expand Up @@ -281,7 +283,9 @@ async def async_update_data():
)

# Only geography-based entries have options:
config_entry.add_update_listener(async_reload_entry)
hass.data[DOMAIN][DATA_LISTENER][
config_entry.entry_id
] = config_entry.add_update_listener(async_reload_entry)
else:
_standardize_node_pro_config_entry(hass, config_entry)

Expand Down Expand Up @@ -365,9 +369,12 @@ async def async_unload_entry(hass, config_entry):
)
if unload_ok:
hass.data[DOMAIN][DATA_COORDINATOR].pop(config_entry.entry_id)
remove_listener = hass.data[DOMAIN][DATA_LISTENER].pop(config_entry.entry_id)
remove_listener()

if config_entry.data[CONF_INTEGRATION_TYPE] == INTEGRATION_TYPE_GEOGRAPHY:
# Re-calculate the update interval period for any remaining consumes of this
# API key:
# Re-calculate the update interval period for any remaining consumers of
# this API key:
async_sync_geo_coordinator_update_intervals(
hass, config_entry.data[CONF_API_KEY]
)
Expand Down
9 changes: 8 additions & 1 deletion homeassistant/components/airvisual/translations/fr.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{
"config": {
"abort": {
"already_configured": "Cette cl\u00e9 API est d\u00e9j\u00e0 utilis\u00e9e."
"already_configured": "Cette cl\u00e9 API est d\u00e9j\u00e0 utilis\u00e9e.",
"reauth_successful": "La r\u00e9-authentification a r\u00e9ussi"
},
"error": {
"cannot_connect": "\u00c9chec de connexion",
Expand All @@ -27,6 +28,12 @@
"description": "Surveillez une unit\u00e9 AirVisual personnelle. Le mot de passe peut \u00eatre r\u00e9cup\u00e9r\u00e9 dans l'interface utilisateur de l'unit\u00e9.",
"title": "Configurer un AirVisual Node/Pro"
},
"reauth_confirm": {
"data": {
"api_key": "Cl\u00e9 d'API"
},
"title": "R\u00e9-authentifier AirVisual"
},
"user": {
"data": {
"cloud_api": "Localisation g\u00e9ographique",
Expand Down
1 change: 1 addition & 0 deletions homeassistant/components/alarmdecoder/translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"default": "Connexion r\u00e9ussie \u00e0 AlarmDecoder."
},
"error": {
"cannot_connect": "\u00c9chec de connexion",
"service_unavailable": "\u00c9chec de connexion"
},
"step": {
Expand Down
3 changes: 2 additions & 1 deletion homeassistant/components/almond/translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"already_setup": "Vous ne pouvez configurer qu'un seul compte Almond",
"cannot_connect": "Impossible de se connecter au serveur Almond",
"missing_configuration": "Veuillez consulter la documentation pour savoir comment configurer Almond.",
"no_url_available": "Aucune URL disponible. Pour plus d'informations sur cette erreur, [consultez la section d'aide] ( {docs_url} )"
"no_url_available": "Aucune URL disponible. Pour plus d'informations sur cette erreur, [consultez la section d'aide] ( {docs_url} )",
"single_instance_allowed": "D\u00e9j\u00e0 configur\u00e9. Une seule configuration possible."
},
"step": {
"hassio_confirm": {
Expand Down
2 changes: 2 additions & 0 deletions homeassistant/components/ambiclimate/translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@
"config": {
"abort": {
"access_token": "Erreur inconnue lors de la g\u00e9n\u00e9ration d'un jeton d'acc\u00e8s.",
"already_configured": "Le compte a d\u00e9j\u00e0 \u00e9t\u00e9 configur\u00e9",
"already_configured_account": "Le compte a d\u00e9j\u00e0 \u00e9t\u00e9 configur\u00e9",
"already_setup": "Le compte Ambiclimate est configur\u00e9.",
"missing_configuration": "Le composant n'est pas configur\u00e9. Veuillez suivre la documentation.",
"no_config": "Vous devez configurer Ambiclimate avant de pouvoir vous authentifier aupr\u00e8s de celui-ci. [Veuillez lire les instructions] (https://www.home-assistant.io/components/ambiclimate/).",
"oauth2_missing_configuration": "Le composant n'est pas configur\u00e9. Veuillez suivre la documentation."
},
Expand Down
1 change: 1 addition & 0 deletions homeassistant/components/arcam_fmj/translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"abort": {
"already_configured": "L'appareil \u00e9tait d\u00e9j\u00e0 configur\u00e9.",
"already_in_progress": "Le flux de configuration de l'appareil est d\u00e9j\u00e0 en cours.",
"cannot_connect": "\u00c9chec de connexion",
"unable_to_connect": "Impossible de se connecter au p\u00e9riph\u00e9rique."
},
"error": {
Expand Down
7 changes: 7 additions & 0 deletions homeassistant/components/arcam_fmj/translations/zh-Hans.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"config": {
"abort": {
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
}
}
}
2 changes: 1 addition & 1 deletion homeassistant/components/asuswrt/device_tracker.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ async def async_connect(self):
async def async_scan_devices(self):
"""Scan for new devices and return a list with found device IDs."""
await self.async_update_info()
return list(self.last_results.keys())
return list(self.last_results)

async def async_get_device_name(self, device):
"""Return the name of the given device or None if we don't know."""
Expand Down
1 change: 1 addition & 0 deletions homeassistant/components/atag/translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"already_configured": "Un seul appareil Atag peut \u00eatre ajout\u00e9 \u00e0 Home Assistant"
},
"error": {
"cannot_connect": "\u00c9chec de connexion",
"connection_error": "Impossible de se connecter, veuillez r\u00e9essayer",
"unauthorized": "Pairage refus\u00e9, v\u00e9rifiez la demande d'authentification de l'appareil"
},
Expand Down
3 changes: 2 additions & 1 deletion homeassistant/components/august/translations/fr.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{
"config": {
"abort": {
"already_configured": "Le compte est d\u00e9j\u00e0 configur\u00e9"
"already_configured": "Le compte est d\u00e9j\u00e0 configur\u00e9",
"reauth_successful": "La r\u00e9-authentification a r\u00e9ussi"
},
"error": {
"cannot_connect": "Impossible de se connecter, veuillez r\u00e9essayer",
Expand Down
2 changes: 2 additions & 0 deletions homeassistant/components/awair/translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@
"abort": {
"already_configured": "Le compte est d\u00e9j\u00e0 configur\u00e9",
"no_devices": "Pas d'appareil trouv\u00e9 sur le r\u00e9seau",
"no_devices_found": "Aucun appareil trouv\u00e9 sur le r\u00e9seau",
"reauth_successful": "Jeton d'acc\u00e8s mis \u00e0 jour avec succ\u00e8s"
},
"error": {
"auth": "Jeton d'acc\u00e8s invalide",
"invalid_access_token": "Jeton d'acc\u00e8s non valide",
"unknown": "Erreur d'API Awair inconnue."
},
"step": {
Expand Down
4 changes: 3 additions & 1 deletion homeassistant/components/axis/translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@
"error": {
"already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9",
"already_in_progress": "Le flux de configuration de l'appareil est d\u00e9j\u00e0 en cours.",
"cannot_connect": "\u00c9chec de connexion",
"device_unavailable": "L'appareil n'est pas disponible",
"faulty_credentials": "Mauvaises informations d'identification de l'utilisateur"
"faulty_credentials": "Mauvaises informations d'identification de l'utilisateur",
"invalid_auth": "Authentification invalide"
},
"flow_title": "Appareil Axis: {name} ( {host} )",
"step": {
Expand Down
4 changes: 4 additions & 0 deletions homeassistant/components/axis/translations/zh-Hans.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
{
"config": {
"error": {
"cannot_connect": "\u8fde\u63a5\u5931\u8d25",
"invalid_auth": "\u9a8c\u8bc1\u7801\u65e0\u6548"
},
"step": {
"user": {
"data": {
Expand Down
2 changes: 2 additions & 0 deletions homeassistant/components/azure_devops/translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
},
"error": {
"authorization_error": "Erreur d'autorisation. V\u00e9rifiez que vous avez acc\u00e8s au projet et que vous disposez des informations d'identification correctes.",
"cannot_connect": "\u00c9chec de connexion",
"connection_error": "Impossible de se connecter \u00e0 Azure DevOps.",
"invalid_auth": "Authentification invalide",
"project_error": "Impossible d'obtenir les informations sur le projet."
},
"flow_title": "Azure DevOps: {project_url}",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"config": {
"error": {
"cannot_connect": "\u8fde\u63a5\u5931\u8d25",
"invalid_auth": "\u9a8c\u8bc1\u7801\u65e0\u6548"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,13 @@
"is_not_locked": "{entity_name} \u5df2\u89e3\u9501",
"is_not_moist": "{entity_name} \u5e72\u71e5",
"is_not_moving": "{entity_name} \u9759\u6b62",
"is_not_occupied": "{entity_name}\u6ca1\u6709\u4eba",
"is_not_open": "{entity_name} \u5df2\u5173\u95ed",
"is_not_plugged_in": "{entity_name} \u672a\u63d2\u5165",
"is_not_powered": "{entity_name} \u672a\u901a\u7535",
"is_not_present": "{entity_name} \u4e0d\u5728\u5bb6",
"is_not_unsafe": "{entity_name} \u5b89\u5168",
"is_occupied": "{entity_name}\u6709\u4eba",
"is_off": "{entity_name} \u5df2\u5173\u95ed",
"is_on": "{entity_name} \u5df2\u5f00\u542f",
"is_open": "{entity_name} \u5df2\u6253\u5f00",
Expand All @@ -49,8 +51,12 @@
"gas": "{entity_name} \u5f00\u59cb\u68c0\u6d4b\u5230\u71c3\u6c14\u6cc4\u6f0f",
"hot": "{entity_name} \u53d8\u70ed",
"light": "{entity_name} \u5f00\u59cb\u68c0\u6d4b\u5230\u5149\u7ebf",
"locked": "{entity_name}\u5df2\u4e0a\u9501",
"motion": "{entity_name} \u68c0\u6d4b\u5230\u6709\u4eba",
"moving": "{entity_name}\u5f00\u59cb\u79fb\u52a8",
"no_motion": "{entity_name} \u672a\u68c0\u6d4b\u5230\u6709\u4eba",
"not_bat_low": "{entity_name}\u7535\u91cf\u6b63\u5e38",
"not_locked": "{entity_name}\u5df2\u89e3\u9501",
"not_opened": "{entity_name}\u5df2\u5173\u95ed",
"turned_off": "{entity_name} \u88ab\u5173\u95ed",
"turned_on": "{entity_name} \u88ab\u6253\u5f00"
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/components/blink/alarm_control_panel.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def device_state_attributes(self):
"""Return the state attributes."""
attr = self.sync.attributes
attr["network_info"] = self.data.networks
attr["associated_cameras"] = list(self.sync.cameras.keys())
attr["associated_cameras"] = list(self.sync.cameras)
attr[ATTR_ATTRIBUTION] = DEFAULT_ATTRIBUTION
return attr

Expand Down
3 changes: 3 additions & 0 deletions homeassistant/components/braviatv/translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
},
"step": {
"authorize": {
"data": {
"pin": "Code PIN"
},
"description": "Saisissez le code PIN affich\u00e9 sur le t\u00e9l\u00e9viseur Sony Bravia. \n\nSi le code PIN n'est pas affich\u00e9, vous devez d\u00e9senregistrer Home Assistant de votre t\u00e9l\u00e9viseur, allez dans: Param\u00e8tres - > R\u00e9seau - > Param\u00e8tres de l'appareil distant - > Annuler l'enregistrement de l'appareil distant.",
"title": "Autoriser Sony Bravia TV"
},
Expand Down
5 changes: 5 additions & 0 deletions homeassistant/components/braviatv/translations/zh-Hans.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
{
"config": {
"step": {
"authorize": {
"data": {
"pin": "PIN \u7801"
}
},
"user": {
"description": "\u8bbe\u7f6eSony Bravia\u7535\u89c6\u96c6\u6210\u3002\u5982\u679c\u60a8\u5728\u914d\u7f6e\u65b9\u9762\u9047\u5230\u95ee\u9898\uff0c\u8bf7\u8bbf\u95ee\uff1ahttps://www.home-assistant.io/integrations/braviatv\n\u786e\u4fdd\u7535\u89c6\u5df2\u6253\u5f00\u3002"
}
Expand Down
4 changes: 2 additions & 2 deletions homeassistant/components/broadlink/remote.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
SUPPORT_LEARN_COMMAND,
RemoteEntity,
)
from homeassistant.const import CONF_HOST, STATE_ON
from homeassistant.const import CONF_HOST, STATE_OFF
from homeassistant.core import callback
from homeassistant.exceptions import HomeAssistantError
import homeassistant.helpers.config_validation as cv
Expand Down Expand Up @@ -202,7 +202,7 @@ def get_flags(self):
async def async_added_to_hass(self):
"""Call when the remote is added to hass."""
state = await self.async_get_last_state()
self._state = state is None or state.state == STATE_ON
self._state = state is None or state.state != STATE_OFF

self.async_on_remove(
self._coordinator.async_add_listener(self.async_write_ha_state)
Expand Down
1 change: 1 addition & 0 deletions homeassistant/components/broadlink/translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
},
"error": {
"cannot_connect": "\u00c9chec de connexion",
"invalid_host": "Nom d'h\u00f4te ou adresse IP non valide",
"unknown": "Erreur inattendue"
},
"flow_title": "{name} ( {model} \u00e0 {host} )",
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/components/cloudflare/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"domain": "cloudflare",
"name": "Cloudflare",
"documentation": "https://www.home-assistant.io/integrations/cloudflare",
"requirements": ["pycfdns==1.1.1"],
"requirements": ["pycfdns==1.2.1"],
"codeowners": ["@ludeeus", "@ctalkington"],
"config_flow": true
}
35 changes: 35 additions & 0 deletions homeassistant/components/cloudflare/translations/fr.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"config": {
"abort": {
"single_instance_allowed": "D\u00e9j\u00e0 configur\u00e9. Une seule configuration possible.",
"unknown": "Erreur inattendue"
},
"error": {
"cannot_connect": "\u00c9chec de connexion",
"invalid_auth": "Authentification invalide",
"invalid_zone": "Zone invalide"
},
"flow_title": "Cloudflare: {name}",
"step": {
"records": {
"data": {
"records": "Enregistrements"
},
"title": "Choisissez les enregistrements \u00e0 mettre \u00e0 jour"
},
"user": {
"data": {
"api_token": "Jeton d'API"
},
"description": "Cette int\u00e9gration n\u00e9cessite un jeton API cr\u00e9\u00e9 avec les autorisations Zone: Zone: Lecture et Zone: DNS: Modifiez pour toutes les zones de votre compte.",
"title": "Connectez-vous \u00e0 Cloudflare"
},
"zone": {
"data": {
"zone": "Zone"
},
"title": "Choisissez la zone \u00e0 mettre \u00e0 jour"
}
}
}
}
Loading