diff --git a/homeassistant/components/ambiclimate/.translations/en.json b/homeassistant/components/ambiclimate/.translations/en.json
index 32b4a7e2b24..da1e173b4a8 100644
--- a/homeassistant/components/ambiclimate/.translations/en.json
+++ b/homeassistant/components/ambiclimate/.translations/en.json
@@ -3,7 +3,7 @@
         "abort": {
             "access_token": "Unknown error generating an access token.",
             "already_setup": "The Ambiclimate account is configured.",
-            "no_config": "You need to configure Ambiclimate before being able to authenticate with it. [Please read the instructions](https://www.home-assistant.io/integrations/ambiclimate/)."
+            "no_config": "You need to configure Ambiclimate before being able to authenticate with it. [Please read the instructions](https://www.home-assistant.io/components/ambiclimate/)."
         },
         "create_entry": {
             "default": "Successfully authenticated with Ambiclimate"
diff --git a/homeassistant/components/arcam_fmj/.translations/es-419.json b/homeassistant/components/arcam_fmj/.translations/es-419.json
new file mode 100644
index 00000000000..b0ad4660d0f
--- /dev/null
+++ b/homeassistant/components/arcam_fmj/.translations/es-419.json
@@ -0,0 +1,5 @@
+{
+    "config": {
+        "title": "Arcam FMJ"
+    }
+}
\ No newline at end of file
diff --git a/homeassistant/components/binary_sensor/.translations/es-419.json b/homeassistant/components/binary_sensor/.translations/es-419.json
new file mode 100644
index 00000000000..f1c20e5346b
--- /dev/null
+++ b/homeassistant/components/binary_sensor/.translations/es-419.json
@@ -0,0 +1,65 @@
+{
+    "device_automation": {
+        "condition_type": {
+            "is_bat_low": "{entity_name} la bater\u00eda est\u00e1 baja",
+            "is_cold": "{entity_name} est\u00e1 fr\u00edo",
+            "is_connected": "{entity_name} est\u00e1 conectado",
+            "is_gas": "{entity_name} est\u00e1 detectando gas",
+            "is_hot": "{entity_name} est\u00e1 caliente",
+            "is_light": "{entity_name} est\u00e1 detectando luz",
+            "is_locked": "{entity_name} est\u00e1 bloqueado",
+            "is_moist": "{entity_name} est\u00e1 h\u00famedo",
+            "is_motion": "{entity_name} est\u00e1 detectando movimiento",
+            "is_moving": "{entity_name} se est\u00e1 moviendo",
+            "is_no_gas": "{entity_name} no detecta gas",
+            "is_no_light": "{entity_name} no detecta luz",
+            "is_no_motion": "{entity_name} no detecta movimiento",
+            "is_no_problem": "{entity_name} no detecta el problema",
+            "is_no_smoke": "{entity_name} no detecta humo",
+            "is_no_sound": "{entity_name} no detecta sonido",
+            "is_no_vibration": "{entity_name} no detecta vibraciones",
+            "is_not_bat_low": "{entity_name} bater\u00eda est\u00e1 normal",
+            "is_not_cold": "{entity_name} no est\u00e1 fr\u00edo",
+            "is_not_connected": "{entity_name} est\u00e1 desconectado",
+            "is_not_hot": "{entity_name} no est\u00e1 caliente",
+            "is_not_locked": "{entity_name} est\u00e1 desbloqueado",
+            "is_not_moist": "{entity_name} est\u00e1 seco",
+            "is_not_moving": "{entity_name} no se mueve",
+            "is_not_occupied": "{entity_name} no est\u00e1 ocupado",
+            "is_not_open": "{entity_name} est\u00e1 cerrado",
+            "is_not_plugged_in": "{entity_name} est\u00e1 desconectado",
+            "is_powered": "{entity_name} est\u00e1 encendido",
+            "is_present": "{entity_name} est\u00e1 presente",
+            "is_problem": "{entity_name} est\u00e1 detectando un problema",
+            "is_smoke": "{entity_name} est\u00e1 detectando humo",
+            "is_sound": "{entity_name} est\u00e1 detectando sonido",
+            "is_unsafe": "{entity_name} es inseguro",
+            "is_vibration": "{entity_name} est\u00e1 detectando vibraciones"
+        },
+        "trigger_type": {
+            "bat_low": "{entity_name} bater\u00eda baja",
+            "closed": "{entity_name} cerrado",
+            "cold": "{entity_name} se enfri\u00f3",
+            "connected": "{entity_name} conectado",
+            "gas": "{entity_name} comenz\u00f3 a detectar gas",
+            "hot": "{entity_name} se calent\u00f3",
+            "light": "{entity_name} comenz\u00f3 a detectar luz",
+            "locked": "{entity_name} bloqueado",
+            "moist\u00a7": "{entity_name} se humedeci\u00f3",
+            "motion": "{entity_name} comenz\u00f3 a detectar movimiento",
+            "moving": "{entity_name} comenz\u00f3 a moverse",
+            "no_gas": "{entity_name} dej\u00f3 de detectar gas",
+            "no_light": "{entity_name} dej\u00f3 de detectar luz",
+            "no_motion": "{entity_name} dej\u00f3 de detectar movimiento",
+            "no_problem": "{entity_name} dej\u00f3 de detectar problemas",
+            "no_smoke": "{entity_name} dej\u00f3 de detectar humo",
+            "no_sound": "{entity_name} dej\u00f3 de detectar sonido",
+            "no_vibration": "{entity_name} dej\u00f3 de detectar vibraciones",
+            "not_bat_low": "{entity_name} bater\u00eda normal",
+            "not_cold": "{entity_name} no se enfri\u00f3",
+            "not_connected": "{entity_name} desconectado",
+            "not_hot": "{entity_name} no se calent\u00f3",
+            "not_locked": "{entity_name} desbloqueado"
+        }
+    }
+}
\ No newline at end of file
diff --git a/homeassistant/components/cert_expiry/.translations/es-419.json b/homeassistant/components/cert_expiry/.translations/es-419.json
new file mode 100644
index 00000000000..392dbf35f5a
--- /dev/null
+++ b/homeassistant/components/cert_expiry/.translations/es-419.json
@@ -0,0 +1,5 @@
+{
+    "config": {
+        "title": "Expiraci\u00f3n del certificado"
+    }
+}
\ No newline at end of file
diff --git a/homeassistant/components/deconz/.translations/es-419.json b/homeassistant/components/deconz/.translations/es-419.json
index 1a5d992ef7b..448b654c86e 100644
--- a/homeassistant/components/deconz/.translations/es-419.json
+++ b/homeassistant/components/deconz/.translations/es-419.json
@@ -5,7 +5,8 @@
             "already_in_progress": "El flujo de configuraci\u00f3n para el puente ya est\u00e1 en progreso.",
             "no_bridges": "No se descubrieron puentes deCONZ",
             "not_deconz_bridge": "No es un puente deCONZ",
-            "one_instance_only": "El componente solo admite una instancia deCONZ"
+            "one_instance_only": "El componente solo admite una instancia deCONZ",
+            "updated_instance": "Instancia deCONZ actualizada con nueva direcci\u00f3n de host"
         },
         "error": {
             "no_key": "No se pudo obtener una clave de API"
@@ -16,7 +17,8 @@
                     "allow_clip_sensor": "Permitir la importaci\u00f3n de sensores virtuales",
                     "allow_deconz_groups": "Permitir la importaci\u00f3n de grupos deCONZ"
                 },
-                "description": "\u00bfDesea configurar Home Assistant para conectarse a la puerta de enlace deCONZ proporcionada por el complemento hass.io {addon}?"
+                "description": "\u00bfDesea configurar Home Assistant para conectarse a la puerta de enlace deCONZ proporcionada por el complemento hass.io {addon}?",
+                "title": "deCONZ Zigbee gateway a trav\u00e9s del complemento Hass.io"
             },
             "init": {
                 "data": {
@@ -38,5 +40,35 @@
             }
         },
         "title": "deCONZ Zigbee gateway"
+    },
+    "device_automation": {
+        "trigger_subtype": {
+            "both_buttons": "Ambos botones",
+            "button_1": "Primer bot\u00f3n",
+            "button_2": "Segundo bot\u00f3n",
+            "button_3": "Tercer bot\u00f3n",
+            "button_4": "Cuarto bot\u00f3n",
+            "close": "Cerrar",
+            "left": "Izquierda",
+            "open": "Abrir",
+            "right": "Derecha",
+            "turn_off": "Apagar",
+            "turn_on": "Encender"
+        },
+        "trigger_type": {
+            "remote_button_rotated": "Bot\u00f3n girado \"{subtype}\"",
+            "remote_gyro_activated": "Dispositivo agitado"
+        }
+    },
+    "options": {
+        "step": {
+            "async_step_deconz_devices": {
+                "data": {
+                    "allow_clip_sensor": "Permitir sensores deCONZ CLIP",
+                    "allow_deconz_groups": "Permitir grupos de luz deCONZ"
+                },
+                "description": "Configurar la visibilidad de los tipos de dispositivos deCONZ"
+            }
+        }
     }
 }
\ No newline at end of file
diff --git a/homeassistant/components/heos/.translations/es-419.json b/homeassistant/components/heos/.translations/es-419.json
index 66c02884a7e..4d442a4543b 100644
--- a/homeassistant/components/heos/.translations/es-419.json
+++ b/homeassistant/components/heos/.translations/es-419.json
@@ -3,6 +3,11 @@
         "abort": {
             "already_setup": "Solo puede configurar una sola conexi\u00f3n Heos, ya que ser\u00e1 compatible con todos los dispositivos de la red."
         },
+        "step": {
+            "user": {
+                "title": "Con\u00e9ctate a Heos"
+            }
+        },
         "title": "Heos"
     }
 }
\ No newline at end of file
diff --git a/homeassistant/components/homekit_controller/.translations/es-419.json b/homeassistant/components/homekit_controller/.translations/es-419.json
index 9ddf336c060..67a65f752b4 100644
--- a/homeassistant/components/homekit_controller/.translations/es-419.json
+++ b/homeassistant/components/homekit_controller/.translations/es-419.json
@@ -4,6 +4,7 @@
             "already_configured": "El accesorio ya est\u00e1 configurado con este controlador.",
             "already_paired": "Este accesorio ya est\u00e1 emparejado con otro dispositivo. Por favor, reinicie el accesorio y vuelva a intentarlo."
         },
+        "flow_title": "Accesorio HomeKit: {name}",
         "step": {
             "pair": {
                 "data": {
diff --git a/homeassistant/components/iaqualink/.translations/es-419.json b/homeassistant/components/iaqualink/.translations/es-419.json
new file mode 100644
index 00000000000..170c2851d08
--- /dev/null
+++ b/homeassistant/components/iaqualink/.translations/es-419.json
@@ -0,0 +1,13 @@
+{
+    "config": {
+        "step": {
+            "user": {
+                "data": {
+                    "password": "Contrase\u00f1a",
+                    "username": "Nombre de usuario / direcci\u00f3n de correo electr\u00f3nico"
+                },
+                "description": "Por favor, Ingrese el nombre de usuario y la contrase\u00f1a para su cuenta de iAqualink."
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/homeassistant/components/life360/.translations/es-419.json b/homeassistant/components/life360/.translations/es-419.json
index 3f9bfab3304..512d0285ac5 100644
--- a/homeassistant/components/life360/.translations/es-419.json
+++ b/homeassistant/components/life360/.translations/es-419.json
@@ -1,5 +1,23 @@
 {
     "config": {
+        "abort": {
+            "user_already_configured": "La cuenta ya ha sido configurada"
+        },
+        "error": {
+            "invalid_credentials": "Credenciales no v\u00e1lidas",
+            "invalid_username": "Nombre de usuario inv\u00e1lido",
+            "unexpected": "Error inesperado al comunicarse con el servidor Life360",
+            "user_already_configured": "La cuenta ya ha sido configurada"
+        },
+        "step": {
+            "user": {
+                "data": {
+                    "password": "Contrase\u00f1a",
+                    "username": "Nombre de usuario"
+                },
+                "title": "Informaci\u00f3n de la cuenta Life360"
+            }
+        },
         "title": "Life360"
     }
 }
\ No newline at end of file
diff --git a/homeassistant/components/light/.translations/es-419.json b/homeassistant/components/light/.translations/es-419.json
new file mode 100644
index 00000000000..b63f0d44452
--- /dev/null
+++ b/homeassistant/components/light/.translations/es-419.json
@@ -0,0 +1,12 @@
+{
+    "device_automation": {
+        "condition_type": {
+            "is_off": "{entity_name} est\u00e1 apagada",
+            "is_on": "{entity_name} est\u00e1 encendida"
+        },
+        "trigger_type": {
+            "turned_off": "{entity_name} desactivada",
+            "turned_on": "{entity_name} activada"
+        }
+    }
+}
\ No newline at end of file
diff --git a/homeassistant/components/linky/.translations/es-419.json b/homeassistant/components/linky/.translations/es-419.json
new file mode 100644
index 00000000000..130a856826e
--- /dev/null
+++ b/homeassistant/components/linky/.translations/es-419.json
@@ -0,0 +1,25 @@
+{
+    "config": {
+        "abort": {
+            "username_exists": "La cuenta ya ha sido configurada"
+        },
+        "error": {
+            "access": "No se pudo acceder a Enedis.fr, compruebe su conexi\u00f3n a Internet.",
+            "enedis": "Enedis.fr respondi\u00f3 con un error: vuelva a intentarlo m\u00e1s tarde (normalmente no entre las 11 p.m. y las 2 a.m.)",
+            "unknown": "Error desconocido: por favor, vuelva a intentarlo m\u00e1s tarde (normalmente no entre las 11 p.m. y las 2 a.m.)",
+            "username_exists": "La cuenta ya ha sido configurada",
+            "wrong_login": "Error de inicio de sesi\u00f3n: por favor revise su direcci\u00f3n de correo electr\u00f3nico y contrase\u00f1a"
+        },
+        "step": {
+            "user": {
+                "data": {
+                    "password": "Contrase\u00f1a",
+                    "username": "Correo electr\u00f3nico"
+                },
+                "description": "Ingrese sus credenciales",
+                "title": "Linky"
+            }
+        },
+        "title": "Linky"
+    }
+}
\ No newline at end of file
diff --git a/homeassistant/components/logi_circle/.translations/en.json b/homeassistant/components/logi_circle/.translations/en.json
index 3604eb66ae2..bf3c059f81a 100644
--- a/homeassistant/components/logi_circle/.translations/en.json
+++ b/homeassistant/components/logi_circle/.translations/en.json
@@ -4,7 +4,7 @@
             "already_setup": "You can only configure a single Logi Circle account.",
             "external_error": "Exception occurred from another flow.",
             "external_setup": "Logi Circle successfully configured from another flow.",
-            "no_flows": "You need to configure Logi Circle before being able to authenticate with it. [Please read the instructions](https://www.home-assistant.io/integrations/logi_circle/)."
+            "no_flows": "You need to configure Logi Circle before being able to authenticate with it. [Please read the instructions](https://www.home-assistant.io/components/logi_circle/)."
         },
         "create_entry": {
             "default": "Successfully authenticated with Logi Circle."
diff --git a/homeassistant/components/nest/.translations/en.json b/homeassistant/components/nest/.translations/en.json
index b68c7784d05..cf448bb35e7 100644
--- a/homeassistant/components/nest/.translations/en.json
+++ b/homeassistant/components/nest/.translations/en.json
@@ -4,7 +4,7 @@
             "already_setup": "You can only configure a single Nest account.",
             "authorize_url_fail": "Unknown error generating an authorize url.",
             "authorize_url_timeout": "Timeout generating authorize url.",
-            "no_flows": "You need to configure Nest before being able to authenticate with it. [Please read the instructions](https://www.home-assistant.io/integrations/nest/)."
+            "no_flows": "You need to configure Nest before being able to authenticate with it. [Please read the instructions](https://www.home-assistant.io/components/nest/)."
         },
         "error": {
             "internal_error": "Internal error validating code",
diff --git a/homeassistant/components/nest/.translations/es-419.json b/homeassistant/components/nest/.translations/es-419.json
index 78239148a4e..60a3eb65ca9 100644
--- a/homeassistant/components/nest/.translations/es-419.json
+++ b/homeassistant/components/nest/.translations/es-419.json
@@ -6,7 +6,8 @@
             "no_flows": "Debe configurar Nest antes de poder autenticarse con \u00e9l. [Lea las instrucciones] (https://www.home-assistant.io/components/nest/)."
         },
         "error": {
-            "invalid_code": "Codigo invalido"
+            "invalid_code": "Codigo invalido",
+            "unknown": "Error desconocido al validar el c\u00f3digo"
         },
         "step": {
             "init": {
diff --git a/homeassistant/components/notion/.translations/es-419.json b/homeassistant/components/notion/.translations/es-419.json
index ad2f19b0668..1f4968f24e1 100644
--- a/homeassistant/components/notion/.translations/es-419.json
+++ b/homeassistant/components/notion/.translations/es-419.json
@@ -1,6 +1,7 @@
 {
     "config": {
         "error": {
+            "identifier_exists": "Nombre de usuario ya registrado",
             "invalid_credentials": "Nombre de usuario o contrase\u00f1a inv\u00e1lidos",
             "no_devices": "No se han encontrado dispositivos en la cuenta."
         },
diff --git a/homeassistant/components/plex/.translations/da.json b/homeassistant/components/plex/.translations/da.json
index 670bc23ca1f..1da4b4b4b49 100644
--- a/homeassistant/components/plex/.translations/da.json
+++ b/homeassistant/components/plex/.translations/da.json
@@ -5,6 +5,7 @@
             "already_configured": "Denne Plex-server er allerede konfigureret",
             "already_in_progress": "Plex konfigureres",
             "invalid_import": "Importeret konfiguration er ugyldig",
+            "token_request_timeout": "Timeout ved hentning af token",
             "unknown": "Mislykkedes af ukendt \u00e5rsag"
         },
         "error": {
diff --git a/homeassistant/components/plex/.translations/es-419.json b/homeassistant/components/plex/.translations/es-419.json
new file mode 100644
index 00000000000..2fc98a70ead
--- /dev/null
+++ b/homeassistant/components/plex/.translations/es-419.json
@@ -0,0 +1,55 @@
+{
+    "config": {
+        "abort": {
+            "all_configured": "Todos los servidores vinculados ya fueron configurados",
+            "already_configured": "Este servidor Plex ya est\u00e1 configurado",
+            "already_in_progress": "Plex se est\u00e1 configurando",
+            "invalid_import": "La configuraci\u00f3n importada no es v\u00e1lida",
+            "token_request_timeout": "Se agot\u00f3 el tiempo de espera para obtener el token",
+            "unknown": "Fall\u00f3 por razones desconocidas"
+        },
+        "error": {
+            "faulty_credentials": "Autorizaci\u00f3n fallida",
+            "no_servers": "No hay servidores vinculados a la cuenta",
+            "no_token": "Proporcione un token o seleccione la configuraci\u00f3n manual",
+            "not_found": "Servidor Plex no encontrado"
+        },
+        "step": {
+            "manual_setup": {
+                "data": {
+                    "host": "Host",
+                    "port": "Puerto",
+                    "ssl": "Usar SSL",
+                    "token": "Token (si es necesario)",
+                    "verify_ssl": "Verificar el certificado SSL"
+                },
+                "title": "Servidor Plex"
+            },
+            "select_server": {
+                "data": {
+                    "server": "Servidor"
+                },
+                "description": "M\u00faltiples servidores disponibles, seleccione uno:",
+                "title": "Seleccionar servidor Plex"
+            },
+            "user": {
+                "data": {
+                    "manual_setup": "Configuraci\u00f3n manual",
+                    "token": "Token Plex"
+                },
+                "title": "Conectar servidor Plex"
+            }
+        },
+        "title": "Plex"
+    },
+    "options": {
+        "step": {
+            "plex_mp_settings": {
+                "data": {
+                    "show_all_controls": "Mostrar todos los controles"
+                },
+                "description": "Opciones para reproductores multimedia Plex"
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/homeassistant/components/plex/.translations/no.json b/homeassistant/components/plex/.translations/no.json
index f7a6bfd9c7f..a0a9d087d1e 100644
--- a/homeassistant/components/plex/.translations/no.json
+++ b/homeassistant/components/plex/.translations/no.json
@@ -5,6 +5,7 @@
             "already_configured": "Denne Plex-serveren er allerede konfigurert",
             "already_in_progress": "Plex blir konfigurert",
             "invalid_import": "Den importerte konfigurasjonen er ugyldig",
+            "token_request_timeout": "Tidsavbrudd ved innhenting av token",
             "unknown": "Mislyktes av ukjent \u00e5rsak"
         },
         "error": {
@@ -36,7 +37,7 @@
                     "manual_setup": "Manuelt oppsett",
                     "token": "Plex token"
                 },
-                "description": "Angi et Plex-token for automatisk oppsett eller Konfigurer en servern manuelt.",
+                "description": "Fortsett \u00e5 autorisere p\u00e5 plex.tv eller manuelt konfigurere en server.",
                 "title": "Koble til Plex-server"
             }
         },
diff --git a/homeassistant/components/point/.translations/en.json b/homeassistant/components/point/.translations/en.json
index 25f0545c340..705ac59b98d 100644
--- a/homeassistant/components/point/.translations/en.json
+++ b/homeassistant/components/point/.translations/en.json
@@ -5,7 +5,7 @@
             "authorize_url_fail": "Unknown error generating an authorize url.",
             "authorize_url_timeout": "Timeout generating authorize url.",
             "external_setup": "Point successfully configured from another flow.",
-            "no_flows": "You need to configure Point before being able to authenticate with it. [Please read the instructions](https://www.home-assistant.io/integrations/point/)."
+            "no_flows": "You need to configure Point before being able to authenticate with it. [Please read the instructions](https://www.home-assistant.io/components/point/)."
         },
         "create_entry": {
             "default": "Successfully authenticated with Minut for your Point device(s)"
diff --git a/homeassistant/components/ps4/.translations/en.json b/homeassistant/components/ps4/.translations/en.json
index 3a7223ade29..756eb65d4f7 100644
--- a/homeassistant/components/ps4/.translations/en.json
+++ b/homeassistant/components/ps4/.translations/en.json
@@ -4,8 +4,8 @@
             "credential_error": "Error fetching credentials.",
             "devices_configured": "All devices found are already configured.",
             "no_devices_found": "No PlayStation 4 devices found on the network.",
-            "port_987_bind_error": "Could not bind to port 987. Refer to the [documentation](https://www.home-assistant.io/integrations/ps4/) for additional info.",
-            "port_997_bind_error": "Could not bind to port 997. Refer to the [documentation](https://www.home-assistant.io/integrations/ps4/) for additional info."
+            "port_987_bind_error": "Could not bind to port 987. Refer to the [documentation](https://www.home-assistant.io/components/ps4/) for additional info.",
+            "port_997_bind_error": "Could not bind to port 997. Refer to the [documentation](https://www.home-assistant.io/components/ps4/) for additional info."
         },
         "error": {
             "credential_timeout": "Credential service timed out. Press submit to restart.",
@@ -25,7 +25,7 @@
                     "name": "Name",
                     "region": "Region"
                 },
-                "description": "Enter your PlayStation 4 information. For 'PIN', navigate to 'Settings' on your PlayStation 4 console. Then navigate to 'Mobile App Connection Settings' and select 'Add Device'. Enter the PIN that is displayed. Refer to the [documentation](https://www.home-assistant.io/integrations/ps4/) for additional info.",
+                "description": "Enter your PlayStation 4 information. For 'PIN', navigate to 'Settings' on your PlayStation 4 console. Then navigate to 'Mobile App Connection Settings' and select 'Add Device'. Enter the PIN that is displayed. Refer to the [documentation](https://www.home-assistant.io/components/ps4/) for additional info.",
                 "title": "PlayStation 4"
             },
             "mode": {
diff --git a/homeassistant/components/soma/.translations/da.json b/homeassistant/components/soma/.translations/da.json
index 460f01e301f..a82da0ce24d 100644
--- a/homeassistant/components/soma/.translations/da.json
+++ b/homeassistant/components/soma/.translations/da.json
@@ -2,6 +2,7 @@
     "config": {
         "abort": {
             "already_setup": "Du kan kun konfigurere en Soma-konto.",
+            "authorize_url_timeout": "Timeout ved generering af autoriseret url.",
             "missing_configuration": "Soma-komponenten er ikke konfigureret. F\u00f8lg venligst dokumentationen."
         },
         "create_entry": {
diff --git a/homeassistant/components/somfy/.translations/es-419.json b/homeassistant/components/somfy/.translations/es-419.json
new file mode 100644
index 00000000000..ff0383c7f01
--- /dev/null
+++ b/homeassistant/components/somfy/.translations/es-419.json
@@ -0,0 +1,5 @@
+{
+    "config": {
+        "title": "Somfy"
+    }
+}
\ No newline at end of file
diff --git a/homeassistant/components/switch/.translations/es-419.json b/homeassistant/components/switch/.translations/es-419.json
new file mode 100644
index 00000000000..f9607852036
--- /dev/null
+++ b/homeassistant/components/switch/.translations/es-419.json
@@ -0,0 +1,18 @@
+{
+    "device_automation": {
+        "action_type": {
+            "turn_off": "Desactivar {entity_name}",
+            "turn_on": "Activar {entity_name}"
+        },
+        "condition_type": {
+            "is_off": "{entity_name} est\u00e1 apagado",
+            "is_on": "{entity_name} est\u00e1 encendido",
+            "turn_off": "{entity_name} apagado",
+            "turn_on": "{entity_name} encendido"
+        },
+        "trigger_type": {
+            "turned_off": "{entity_name} apagado",
+            "turned_on": "{entity_name} encendido"
+        }
+    }
+}
\ No newline at end of file
diff --git a/homeassistant/components/tellduslive/.translations/es-419.json b/homeassistant/components/tellduslive/.translations/es-419.json
index 503530e728a..1281784dceb 100644
--- a/homeassistant/components/tellduslive/.translations/es-419.json
+++ b/homeassistant/components/tellduslive/.translations/es-419.json
@@ -2,6 +2,7 @@
     "config": {
         "abort": {
             "already_setup": "TelldusLive ya est\u00e1 configurado",
+            "authorize_url_fail": "Error desconocido al generar una URL de autorizaci\u00f3n.",
             "unknown": "Se produjo un error desconocido"
         },
         "error": {
@@ -17,6 +18,7 @@
                     "host": "Host"
                 }
             }
-        }
+        },
+        "title": "Telldus Live"
     }
 }
\ No newline at end of file
diff --git a/homeassistant/components/toon/.translations/en.json b/homeassistant/components/toon/.translations/en.json
index dde5165c5c1..cea3146a3a5 100644
--- a/homeassistant/components/toon/.translations/en.json
+++ b/homeassistant/components/toon/.translations/en.json
@@ -4,7 +4,7 @@
             "client_id": "The client ID from the configuration is invalid.",
             "client_secret": "The client secret from the configuration is invalid.",
             "no_agreements": "This account has no Toon displays.",
-            "no_app": "You need to configure Toon before being able to authenticate with it. [Please read the instructions](https://www.home-assistant.io/integrations/toon/).",
+            "no_app": "You need to configure Toon before being able to authenticate with it. [Please read the instructions](https://www.home-assistant.io/components/toon/).",
             "unknown_auth_fail": "Unexpected error occured, while authenticating."
         },
         "error": {
diff --git a/homeassistant/components/toon/.translations/es-419.json b/homeassistant/components/toon/.translations/es-419.json
index a0ce81495a8..598bc77aee9 100644
--- a/homeassistant/components/toon/.translations/es-419.json
+++ b/homeassistant/components/toon/.translations/es-419.json
@@ -1,17 +1,27 @@
 {
     "config": {
         "abort": {
+            "no_agreements": "Esta cuenta no tiene pantallas Toon.",
             "unknown_auth_fail": "Ocurri\u00f3 un error inesperado, mientras se autenticaba."
         },
         "error": {
-            "credentials": "Las credenciales proporcionadas no son v\u00e1lidas."
+            "credentials": "Las credenciales proporcionadas no son v\u00e1lidas.",
+            "display_exists": "La pantalla seleccionada ya est\u00e1 configurada."
         },
         "step": {
             "authenticate": {
                 "data": {
                     "password": "Contrase\u00f1a",
                     "username": "Nombre de usuario"
-                }
+                },
+                "title": "Vincula tu cuenta de Toon"
+            },
+            "display": {
+                "data": {
+                    "display": "Elegir pantalla"
+                },
+                "description": "Seleccione la pantalla Toon para conectarse.",
+                "title": "Seleccionar pantalla"
             }
         },
         "title": "Toon"
diff --git a/homeassistant/components/traccar/.translations/es-419.json b/homeassistant/components/traccar/.translations/es-419.json
new file mode 100644
index 00000000000..bfe62cc4e78
--- /dev/null
+++ b/homeassistant/components/traccar/.translations/es-419.json
@@ -0,0 +1,8 @@
+{
+    "config": {
+        "abort": {
+            "not_internet_accessible": "Su instancia de Home Assistant debe estar accesible desde Internet para recibir mensajes de Traccar.",
+            "one_instance_allowed": "Solo una instancia es necesaria."
+        }
+    }
+}
\ No newline at end of file
diff --git a/homeassistant/components/twentemilieu/.translations/es-419.json b/homeassistant/components/twentemilieu/.translations/es-419.json
new file mode 100644
index 00000000000..02ac8ecf27a
--- /dev/null
+++ b/homeassistant/components/twentemilieu/.translations/es-419.json
@@ -0,0 +1,10 @@
+{
+    "config": {
+        "step": {
+            "user": {
+                "title": "Twente Milieu"
+            }
+        },
+        "title": "Twente Milieu"
+    }
+}
\ No newline at end of file
diff --git a/homeassistant/components/velbus/.translations/es-419.json b/homeassistant/components/velbus/.translations/es-419.json
new file mode 100644
index 00000000000..1e1e8897c30
--- /dev/null
+++ b/homeassistant/components/velbus/.translations/es-419.json
@@ -0,0 +1,21 @@
+{
+    "config": {
+        "abort": {
+            "port_exists": "Este puerto ya est\u00e1 configurado"
+        },
+        "error": {
+            "connection_failed": "La conexi\u00f3n velbus fall\u00f3",
+            "port_exists": "Este puerto ya est\u00e1 configurado"
+        },
+        "step": {
+            "user": {
+                "data": {
+                    "name": "El nombre de esta conexi\u00f3n velbus",
+                    "port": "Cadena de conexi\u00f3n"
+                },
+                "title": "Definir el tipo de conexi\u00f3n velbus"
+            }
+        },
+        "title": "Interfaz Velbus"
+    }
+}
\ No newline at end of file
diff --git a/homeassistant/components/vesync/.translations/es-419.json b/homeassistant/components/vesync/.translations/es-419.json
new file mode 100644
index 00000000000..58c62fb64b6
--- /dev/null
+++ b/homeassistant/components/vesync/.translations/es-419.json
@@ -0,0 +1,20 @@
+{
+    "config": {
+        "abort": {
+            "already_setup": "Solo se permite una instancia de Vesync"
+        },
+        "error": {
+            "invalid_login": "Nombre de usuario o contrase\u00f1a inv\u00e1lidos"
+        },
+        "step": {
+            "user": {
+                "data": {
+                    "password": "Contrase\u00f1a",
+                    "username": "Direcci\u00f3n de correo electr\u00f3nico"
+                },
+                "title": "Ingrese nombre de usuario y contrase\u00f1a"
+            }
+        },
+        "title": "VeSync"
+    }
+}
\ No newline at end of file
diff --git a/homeassistant/components/withings/.translations/es-419.json b/homeassistant/components/withings/.translations/es-419.json
new file mode 100644
index 00000000000..485150d2928
--- /dev/null
+++ b/homeassistant/components/withings/.translations/es-419.json
@@ -0,0 +1,19 @@
+{
+    "config": {
+        "abort": {
+            "no_flows": "Debe configurar Withings antes de poder autenticarse con \u00e9l. Por favor lea la documentaci\u00f3n."
+        },
+        "create_entry": {
+            "default": "Autenticado correctamente con Withings para el perfil seleccionado."
+        },
+        "step": {
+            "user": {
+                "data": {
+                    "profile": "Perfil"
+                },
+                "title": "Perfil del usuario."
+            }
+        },
+        "title": "Withings"
+    }
+}
\ No newline at end of file
diff --git a/homeassistant/components/zha/.translations/es-419.json b/homeassistant/components/zha/.translations/es-419.json
index 0047c762a9d..edf38b4fd3b 100644
--- a/homeassistant/components/zha/.translations/es-419.json
+++ b/homeassistant/components/zha/.translations/es-419.json
@@ -16,5 +16,23 @@
             }
         },
         "title": "ZHA"
+    },
+    "device_automation": {
+        "trigger_subtype": {
+            "left": "Izquierda",
+            "open": "Abrir",
+            "right": "Derecha",
+            "turn_off": "Apagar",
+            "turn_on": "Encender"
+        },
+        "trigger_type": {
+            "device_dropped": "Dispositivo ca\u00eddo",
+            "device_flipped": "Dispositivo volteado \"{subtype}\"",
+            "device_knocked": "Dispositivo golpeado \"{subtype}\"",
+            "device_rotated": "Dispositivo girado \"{subtype}\"",
+            "device_shaken": "Dispositivo agitado",
+            "device_slid": "Dispositivo deslizado \"{subtype}\"",
+            "device_tilted": "Dispositivo inclinado"
+        }
     }
 }
\ No newline at end of file
diff --git a/homeassistant/components/zha/.translations/ru.json b/homeassistant/components/zha/.translations/ru.json
index cd618072592..2f6f42311c3 100644
--- a/homeassistant/components/zha/.translations/ru.json
+++ b/homeassistant/components/zha/.translations/ru.json
@@ -16,5 +16,10 @@
             }
         },
         "title": "Zigbee Home Automation"
+    },
+    "device_automation": {
+        "action_type": {
+            "warn": "\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435"
+        }
     }
 }
\ No newline at end of file