diff --git a/locales/es.json b/locales/es.json
index 7eaf09dd..c38e496f 100644
--- a/locales/es.json
+++ b/locales/es.json
@@ -1,9 +1,9 @@
 {
-    "action_invalid": "Acción inválida '{:s}'",
+    "action_invalid": "Acción inválida '{action:s}'",
     "admin_password": "Contraseña administrativa",
     "admin_password_change_failed": "No se pudo cambiar la contraseña",
     "admin_password_changed": "Contraseña administrativa se cambió con éxito",
-    "app_already_installed": "{:s} ya está instalado ",
+    "app_already_installed": "{app:s} ya está instalado",
     "app_extraction_failed": "No se pudo extraer los archivos de instalación ",
     "app_id_invalid": "id de la aplicación inválida ",
     "app_install_files_invalid": "Archivos de instalación inválidos ",
@@ -11,13 +11,13 @@
     "app_location_install_failed": "No se pudo instalar la aplicación en esta lugar",
     "app_manifest_invalid": "Manifesto de la aplicación es inválido",
     "app_no_upgrade": "Ninguna app a actualizar",
-    "app_not_installed": "{:s} no está instalado.",
+    "app_not_installed": "{app:s} no está instalado",
     "app_recent_version_required": "{:s}  requiere una versión más reciente de moulinette ",
-    "app_removed": "{:s} era eliminado con éxito ",
+    "app_removed": "{app:s} era eliminado con éxito",
     "app_sources_fetch_failed": "No se pudo descargar los archivos de códigos fuentes",
     "app_unknown": "App desconocida",
     "app_upgrade_failed": "No se pudo actualizar todas las aplicaciones ",
-    "app_upgraded": "{:s} actualizado con éxito",
+    "app_upgraded": "{app:s} actualizado con éxito",
     "appslist_fetched": "Lista de aplicaciones se trajo con éxito",
     "appslist_removed": "Lista de aplicaciones se eliminó con éxito",
     "appslist_retrieve_error": "No se pudo recuperar la lista de aplicaciones a distancia ",
@@ -41,7 +41,7 @@
     "backup_output_directory_not_empty": "La carpeta de salida no está vacía",
     "backup_output_directory_required": "Debe proporcionar un directorio de salida para el backup",
     "backup_running_hooks": "Ejecutando los hooks de backup...",
-    "custom_app_url_required": " Debe proporcionar una URL para actualizar su aplicación personalizada {:s} ",
+    "custom_app_url_required": "Debe proporcionar una URL para actualizar su aplicación personalizada {app:s}",
     "custom_appslist_name_required": "Debe proporcionar un nombre para la lista de aplicaciones personalizadas ",
     "dnsmasq_isnt_installed": "Parece que dnsmasq no está instalado, por favor, ejecuta 'apt-get remove bind9 && apt-get install dnsmasq'",
     "domain_cert_gen_failed": "No se pudo crear certificado",
@@ -66,7 +66,7 @@
     "dyndns_ip_updated": "La dirección IP era actualizado en DynDNS con éxito",
     "dyndns_key_generating": "Generación del llave de DNS está en curso. Este podría durar unos momentos...",
     "dyndns_registered": "El dominio DynDNS era registrado con éxito.",
-    "dyndns_registration_failed": "No se pudo registrar el dominio DynDNS: {:s}",
+    "dyndns_registration_failed": "No se pudo registrar el dominio DynDNS: {error:s}",
     "dyndns_unavailable": "Subdominio DynDNS no disponible",
     "executing_script": "Ejecutando script...",
     "extracting": "Extrayendo...",
@@ -77,16 +77,16 @@
     "hook_argument_missing": "Falta un parámetro '{:s}'",
     "hook_choice_invalid": "Selección inválida '{:s}'",
     "hook_list_by_invalid": "La propiedad de este hook es inválida",
-    "hook_name_unknown": "Hook desconocido '{:s}'",
+    "hook_name_unknown": "Hook desconocido '{name:s}'",
     "installation_complete": "La instalación se ha completado",
     "installation_failed": "La Instalación se ha fracasado",
     "ip6tables_unavailable": "No puedes modificar los ip6tables aquí. Eres en un contenedor o su kernel no soporte este opción.",
     "iptables_unavailable": "No puedes modificar los iptables aquí. Eres en un contenedor o su kernel no soporte este opción.",
     "ldap_initialized": "LDAP se inició con éxito",
     "license_undefined": "indefinido",
-    "mail_alias_remove_failed": "No se pudo quitar el alias de correos '{:s}'",
-    "mail_domain_unknown": "El dominio de correos '{:s}' es desconocido",
-    "mail_forward_remove_failed": "No se pudo quitar la reenvía de correos '{:s}'",
+    "mail_alias_remove_failed": "No se pudo quitar el alias de correos '{mail:s}'",
+    "mail_domain_unknown": "El dominio de correos '{domain:s}' es desconocido",
+    "mail_forward_remove_failed": "No se pudo quitar la reenvía de correos '{mail:s}'",
     "maindomain_change_failed": "No se pudo cambiar el dominio principal",
     "maindomain_changed": "Dominio principal se cambió con éxito",
     "monitor_disabled": "Supervisión del sistema era desactivado con éxito",
@@ -105,7 +105,7 @@
     "no_appslist_found": "No se encontró ninguna lista de Apps",
     "no_internet_connection": "El servidor no está conectado al Internet.",
     "packages_no_upgrade": "No hay actualización por ningun paquete",
-    "packages_upgrade_critical_later": "Los paquetes críticos ({:s}) se actualizarán más tarde",
+    "packages_upgrade_critical_later": "Los paquetes críticos ({packages:s}) se actualizarán más tarde",
     "packages_upgrade_failed": "No se pudo actualizar todo de los paquetes",
     "path_removal_failed": "No se pudo quitar la ruta {:s}",
     "pattern_backup_archive_name": "Debe que ser un nombre de archivo válido con los caracteres alfanumericos, o los -_.",
@@ -118,39 +118,39 @@
     "pattern_port": "El numéro del puerto debe ser válido (i.e. 0-65535)",
     "pattern_port_or_range": "El numéro del puerto debe ser válido (i.e. 0-65535) o un intervalo de puertos (e.g. 100:200)",
     "pattern_username": "Debe contener solamente caracteres alfanuméricos o la guion bajo",
-    "port_already_closed": "El puerto {} ya está cerrado por {:s} connecciones.",
-    "port_already_opened": "El puerto {} ya está abierto por {:s} connecciones",
-    "port_available": "El puerto {} está disponible",
-    "port_unavailable": "El puerto {} no está disponible",
+    "port_already_closed": "El puerto {port:d} ya está cerrado por {ip_version:s} connecciones",
+    "port_already_opened": "El puerto {port:d} ya está abierto por {ip_version:s} connecciones",
+    "port_available": "El puerto {port:d} está disponible",
+    "port_unavailable": "El puerto {port:d} no está disponible",
     "restore_complete": "Restauración se ha completado",
     "restore_confirm_yunohost_installed": "Estás seguro que quieres restaurar a un sistema que ya está instalado? [{answers:s}]",
     "restore_failed": "No se pudo restaurar el sistema",
     "restore_running_hooks": "Ejecutando hooks de restauración...",
-    "service_add_failed": "No se pudo añadir el servicio '{:s}'",
+    "service_add_failed": "No se pudo añadir el servicio '{service:s}'",
     "service_added": "Servicio añadido con éxito",
-    "service_already_started": "El servicio '{:s}' ya se ha empezado",
-    "service_already_stopped": "El servicio '{:s}' ya está parado ",
-    "service_cmd_exec_failed": "No se pudo ejecutar comando '{:s}'",
-    "service_disable_failed": "No se pudo desactivar el servicio '{:s}'",
-    "service_disabled": "Servicio '{:s}' desactivado con éxito",
-    "service_enable_failed": "No se pudo activar el servicio '{:s}'",
-    "service_enabled": "Servicio '{:s}' activado con éxito",
-    "service_no_log": "No hay archivo historial del servicio '{:s}' a exhibir",
-    "service_remove_failed": "No se pudo quitar el servicio '{:s}'",
+    "service_already_started": "El servicio '{service:s}' ya se ha empezado",
+    "service_already_stopped": "El servicio '{service:s}' ya está parado",
+    "service_cmd_exec_failed": "No se pudo ejecutar comando '{command:s}'",
+    "service_disable_failed": "No se pudo desactivar el servicio '{service:s}'",
+    "service_disabled": "Servicio '{service:s}' desactivado con éxito",
+    "service_enable_failed": "No se pudo activar el servicio '{service:s}'",
+    "service_enabled": "Servicio '{service:s}' activado con éxito",
+    "service_no_log": "No hay archivo historial del servicio '{service:s}' a exhibir",
+    "service_remove_failed": "No se pudo quitar el servicio '{service:s}'",
     "service_removed": "Servicio quitado con éxito",
-    "service_start_failed": "No se pudo empezar el servicio '{:s}'",
-    "service_started": "El servicio '{:s}' se empezó con éxito",
-    "service_status_failed": "No se pudo discernir el estado del servicio '{:s}'",
-    "service_stop_failed": "No se pudo parar el servicio '{:s}'",
-    "service_stopped": "Servicio '{:s}' parado con éxito",
-    "service_unknown": "Servicio desconocido '{:s}'",
+    "service_start_failed": "No se pudo empezar el servicio '{service:s}'",
+    "service_started": "El servicio '{service:s}' se empezó con éxito",
+    "service_status_failed": "No se pudo discernir el estado del servicio '{service:s}'",
+    "service_stop_failed": "No se pudo parar el servicio '{service:s}'",
+    "service_stopped": "Servicio '{service:s}' parado con éxito",
+    "service_unknown": "Servicio desconocido '{service:s}'",
     "ssowat_conf_generated": "Configuración SSOwat generado con éxito ",
     "ssowat_conf_updated": "Configuración persistente SSOwat actualizada con éxito",
     "system_upgraded": "Actualización del sistema se ha completado con éxito.",
     "system_username_exists": "Nombre de usuario ya existe en los usuarios del sistema",
     "unbackup_app": "La App '{:s}' no será guardada",
     "unexpected_error": "Un error ha ocurrido",
-    "unit_unknown": "Unidad '{:s}' desconocido",
+    "unit_unknown": "Unidad '{unit:s}' desconocido",
     "unrestore_app": "La App '{:s}' no será restaurada",
     "update_cache_failed": "No se pudo actualizar el cache APT",
     "updating_apt_cache": "Actualizando la lista de paquetes disponibles...",