diff --git a/www/plugins/es/i18n/locale-en-GB.json b/www/plugins/es/i18n/locale-en-GB.json
index 8e9f7073cf1e1e86658aa4373f66c4338c9b4e73..1fa51e8f687a34ad46636924b80ea98b6ae8a690 100644
--- a/www/plugins/es/i18n/locale-en-GB.json
+++ b/www/plugins/es/i18n/locale-en-GB.json
@@ -16,14 +16,6 @@
       "NO_RESULT": "No notification",
       "SHOW_ALL": "Show all",
       "LOAD_NOTIFICATIONS_FAILED": "Could not load notifications"
-    },
-    "GEO": {
-      "DISTANCE": "Maximum distance around the city",
-      "DISTANCE_OPTION": "{{value}} km"
-    },
-    "ERROR": {
-      "REQUIRED_FOR_LOCATION": "Required field to appear on the map",
-      "INVALID_FOR_LOCATION": "Unknown address"
     }
   },
   "MENU": {
@@ -121,7 +113,11 @@
     "REPLY_TO_LINK": "In response to ",
     "REPLY_TO_DELETED_COMMENT": "In response to a deleted comment",
     "REPLY_COUNT": "{{replyCount}} responses",
-    "DELETED_COMMENT": "Comment deleted"
+    "DELETED_COMMENT": "Comment deleted",
+    "ERROR": {
+      "FAILED_SAVE_COMMENT": "Saving comment failed",
+      "FAILED_REMOVE_COMMENT": "Deleting comment failed"
+    }
   },
   "MESSAGE": {
     "REPLY_TITLE_PREFIX": "Re: ",
@@ -281,8 +277,6 @@
       "REMOVE_RECORD_FAILED": "Deleting failed",
       "SAVE_RECORD_FAILED": "Saving failed",
       "RECORD_NOT_EXISTS": "Record not found",
-      "FAILED_SAVE_COMMENT": "Saving comment failed",
-      "FAILED_REMOVE_COMMENT": "Deleting comment failed",
       "GEO_LOCATION_NOT_FOUND": "City or zip code not found"
     },
     "INFO": {
@@ -296,26 +290,14 @@
     "NO_PROFILE_DEFINED": "No Cesium+ profile",
     "BTN_ADD": "Create my profile",
     "BTN_EDIT": "Edit my profile",
-    "BTN_GEOLOC_ADDRESS": "Find my address on the map",
-    "USE_GEO_POINT": "Appear on {{'COMMON.APP_NAME'|translate}} maps?",
-    "LOADING_LOCATION": "Searching address...",
     "UID": "Pseudonym",
     "TITLE": "Lastname, FirstName",
     "TITLE_HELP": "Name",
     "DESCRIPTION": "About me",
     "DESCRIPTION_HELP": "About me...",
-    "ADDRESS": "Address",
-    "ADDRESS_HELP": "Address (optional)",
-    "CITY": "City",
-    "CITY_HELP": "City, Country",
     "SOCIAL_HELP": "http://...",
     "GENERAL_DIVIDER": "General data",
-    "LOCATION_DIVIDER": "Localisation",
     "SOCIAL_NETWORKS_DIVIDER": "Social networks and web site",
-    "LATITUDE": "Latitude",
-    "LATITUDE_HELP": "Latitude",
-    "LONGITUDE": "Longitude",
-    "LONGITUDE_HELP": "Longitude",
     "TECHNICAL_DIVIDER": "Technical data",
     "MODAL_AVATAR": {
       "TITLE": "Avatar",
@@ -324,19 +306,11 @@
       "RESIZE_HELP": "<b>Re-crop the image</b> if necessary. A click on the image allows to move it. Click on the area at the bottom left to zoom in.",
       "RESULT_HELP": "<b>Here is the result</b> as seen on your profile:"
     },
-    "MODAL_LOCATION": {
-      "TITLE": "Search position",
-      "SEARCH_HELP": "City, Country",
-      "ALTERNATIVE_RESULT_DIVIDER": "Alternative results for <b>{{address}}</b>:",
-      "POSITION": "lat/lon : {{lat}} {{lon}}"
-    },
     "ERROR": {
       "LOAD_PROFILE_FAILED": "Could not load user profile.",
       "SAVE_PROFILE_FAILED": "Saving profile failed",
       "INVALID_SOCIAL_NETWORK_FORMAT": "Invalid format: please fill a valid Internet address.<br/><br/>Examples :<ul><li>- A Facebook page (https://www.facebook.com/user)</li><li>- A web page (http://www.domain.com)</li><li>- An email address (joe@dalton.com)</li></ul>",
-      "IMAGE_RESIZE_FAILED": "Error while resizing picture",
-      "GEO_LOCATION_FAILED": "Unable to retrieve your current position. Please use the search button.",
-      "ADDRESS_LOCATION_FAILED": "Unable to retrieve the address position"
+      "IMAGE_RESIZE_FAILED": "Error while resizing picture"
     },
     "INFO": {
       "PROFILE_SAVED": "Profile saved"
@@ -345,6 +319,30 @@
       "WARNING_PUBLIC_DATA": "Please note that the information published here <b>is public</b>: visible including by <b>not logged in people</b>.<br/>{{'PROFILE.PROFILE_DIVIDER_HELP'|translate}}"
     }
   },
+  "LOCATION": {
+    "BTN_GEOLOC_ADDRESS": "Find my address on the map",
+    "USE_GEO_POINT": "Appear on {{'COMMON.APP_NAME'|translate}} maps?",
+    "LOADING_LOCATION": "Searching address...",
+    "LOCATION_DIVIDER": "Localisation",
+    "ADDRESS": "Address",
+    "ADDRESS_HELP": "Address (optional)",
+    "CITY": "City",
+    "CITY_HELP": "City, Country",
+    "DISTANCE": "Maximum distance around the city",
+    "DISTANCE_OPTION": "{{value}} km",
+    "MODAL": {
+      "TITLE": "Search address",
+      "SEARCH_HELP": "City, Country",
+      "ALTERNATIVE_RESULT_DIVIDER": "Alternative results for <b>{{address}}</b>:",
+      "POSITION": "lat/lon : {{lat}} {{lon}}"
+    },
+    "ERROR": {
+      "REQUIRED_FOR_LOCATION": "Required field to appear on the map",
+      "INVALID_FOR_LOCATION": "Unknown address",
+      "GEO_LOCATION_FAILED": "Unable to retrieve your current position. Please use the search button.",
+      "ADDRESS_LOCATION_FAILED": "Unable to retrieve the address position"
+    }
+  },
   "SUBSCRIPTION": {
     "SUBSCRIPTION_DIVIDER": "Online services",
     "SUBSCRIPTION_DIVIDER_HELP": "Online services offer optional additional services, delegated to a third party.",
@@ -432,12 +430,12 @@
       "UPDATE_COMMENT": "<span ng-class=\"{'gray': !notification.uid, 'positive':notification.uid }\"><i class=\"icon\" ng-class=\"{'ion-person': notification.uid, 'ion-key': !notification.uid}\"></i>&thinsp;{{name||uid||params[1]}}</span> has modified his comment on your referencing: <b>{{params[2]}}</b>",
       "NEW_REPLY_COMMENT": "<span ng-class=\"{'gray': !notification.uid, 'positive':notification.uid }\"><i class=\"icon\" ng-class=\"{'ion-person': notification.uid, 'ion-key': !notification.uid}\"></i>&thinsp;{{name||uid||params[1]}}</span> has replied to your comment on the referencing: <b>{{params[2]}}</b>",
       "UPDATE_REPLY_COMMENT": "<span ng-class=\"{'gray': !notification.uid, 'positive':notification.uid }\"><i class=\"icon\" ng-class=\"{'ion-person': notification.uid, 'ion-key': !notification.uid}\"></i>&thinsp;{{name||uid||params[1]}}</span> has modified his answer to your comment, on the referencing: <b>{{params[2]}}</b>"
-    },
-    "CONFIRM": {
-      "ES_USE_FALLBACK_NODE": "Data node <b>{{old}}</b> unreachable or invalid address.<br/><br/>Do you want to temporarily use the data node <b>{{new}}</b>?"
-    },
-    "ERROR": {
-      "ES_CONNECTION_ERROR": "Data node <b>{{server}}</b> unreachable or invalid address.<br/><br/>Cesium will continue to work, <b>without the Cesium+</b> extension (user profiles, private messages, maps and graphics).<br/><br/>Check your Internet connection, or change data node in <a class=\"positive\" ng-click=\"doQuickFix('settings')\">extension settings</a>."
     }
+  },
+  "CONFIRM": {
+    "ES_USE_FALLBACK_NODE": "Data node <b>{{old}}</b> unreachable or invalid address.<br/><br/>Do you want to temporarily use the data node <b>{{new}}</b>?"
+  },
+  "ERROR": {
+    "ES_CONNECTION_ERROR": "Data node <b>{{server}}</b> unreachable or invalid address.<br/><br/>Cesium will continue to work, <b>without the Cesium+</b> extension (user profiles, private messages, maps and graphics).<br/><br/>Check your Internet connection, or change data node in <a class=\"positive\" ng-click=\"doQuickFix('settings')\">extension settings</a>."
   }
 }
diff --git a/www/plugins/es/i18n/locale-en.json b/www/plugins/es/i18n/locale-en.json
index 8e9f7073cf1e1e86658aa4373f66c4338c9b4e73..1fa51e8f687a34ad46636924b80ea98b6ae8a690 100644
--- a/www/plugins/es/i18n/locale-en.json
+++ b/www/plugins/es/i18n/locale-en.json
@@ -16,14 +16,6 @@
       "NO_RESULT": "No notification",
       "SHOW_ALL": "Show all",
       "LOAD_NOTIFICATIONS_FAILED": "Could not load notifications"
-    },
-    "GEO": {
-      "DISTANCE": "Maximum distance around the city",
-      "DISTANCE_OPTION": "{{value}} km"
-    },
-    "ERROR": {
-      "REQUIRED_FOR_LOCATION": "Required field to appear on the map",
-      "INVALID_FOR_LOCATION": "Unknown address"
     }
   },
   "MENU": {
@@ -121,7 +113,11 @@
     "REPLY_TO_LINK": "In response to ",
     "REPLY_TO_DELETED_COMMENT": "In response to a deleted comment",
     "REPLY_COUNT": "{{replyCount}} responses",
-    "DELETED_COMMENT": "Comment deleted"
+    "DELETED_COMMENT": "Comment deleted",
+    "ERROR": {
+      "FAILED_SAVE_COMMENT": "Saving comment failed",
+      "FAILED_REMOVE_COMMENT": "Deleting comment failed"
+    }
   },
   "MESSAGE": {
     "REPLY_TITLE_PREFIX": "Re: ",
@@ -281,8 +277,6 @@
       "REMOVE_RECORD_FAILED": "Deleting failed",
       "SAVE_RECORD_FAILED": "Saving failed",
       "RECORD_NOT_EXISTS": "Record not found",
-      "FAILED_SAVE_COMMENT": "Saving comment failed",
-      "FAILED_REMOVE_COMMENT": "Deleting comment failed",
       "GEO_LOCATION_NOT_FOUND": "City or zip code not found"
     },
     "INFO": {
@@ -296,26 +290,14 @@
     "NO_PROFILE_DEFINED": "No Cesium+ profile",
     "BTN_ADD": "Create my profile",
     "BTN_EDIT": "Edit my profile",
-    "BTN_GEOLOC_ADDRESS": "Find my address on the map",
-    "USE_GEO_POINT": "Appear on {{'COMMON.APP_NAME'|translate}} maps?",
-    "LOADING_LOCATION": "Searching address...",
     "UID": "Pseudonym",
     "TITLE": "Lastname, FirstName",
     "TITLE_HELP": "Name",
     "DESCRIPTION": "About me",
     "DESCRIPTION_HELP": "About me...",
-    "ADDRESS": "Address",
-    "ADDRESS_HELP": "Address (optional)",
-    "CITY": "City",
-    "CITY_HELP": "City, Country",
     "SOCIAL_HELP": "http://...",
     "GENERAL_DIVIDER": "General data",
-    "LOCATION_DIVIDER": "Localisation",
     "SOCIAL_NETWORKS_DIVIDER": "Social networks and web site",
-    "LATITUDE": "Latitude",
-    "LATITUDE_HELP": "Latitude",
-    "LONGITUDE": "Longitude",
-    "LONGITUDE_HELP": "Longitude",
     "TECHNICAL_DIVIDER": "Technical data",
     "MODAL_AVATAR": {
       "TITLE": "Avatar",
@@ -324,19 +306,11 @@
       "RESIZE_HELP": "<b>Re-crop the image</b> if necessary. A click on the image allows to move it. Click on the area at the bottom left to zoom in.",
       "RESULT_HELP": "<b>Here is the result</b> as seen on your profile:"
     },
-    "MODAL_LOCATION": {
-      "TITLE": "Search position",
-      "SEARCH_HELP": "City, Country",
-      "ALTERNATIVE_RESULT_DIVIDER": "Alternative results for <b>{{address}}</b>:",
-      "POSITION": "lat/lon : {{lat}} {{lon}}"
-    },
     "ERROR": {
       "LOAD_PROFILE_FAILED": "Could not load user profile.",
       "SAVE_PROFILE_FAILED": "Saving profile failed",
       "INVALID_SOCIAL_NETWORK_FORMAT": "Invalid format: please fill a valid Internet address.<br/><br/>Examples :<ul><li>- A Facebook page (https://www.facebook.com/user)</li><li>- A web page (http://www.domain.com)</li><li>- An email address (joe@dalton.com)</li></ul>",
-      "IMAGE_RESIZE_FAILED": "Error while resizing picture",
-      "GEO_LOCATION_FAILED": "Unable to retrieve your current position. Please use the search button.",
-      "ADDRESS_LOCATION_FAILED": "Unable to retrieve the address position"
+      "IMAGE_RESIZE_FAILED": "Error while resizing picture"
     },
     "INFO": {
       "PROFILE_SAVED": "Profile saved"
@@ -345,6 +319,30 @@
       "WARNING_PUBLIC_DATA": "Please note that the information published here <b>is public</b>: visible including by <b>not logged in people</b>.<br/>{{'PROFILE.PROFILE_DIVIDER_HELP'|translate}}"
     }
   },
+  "LOCATION": {
+    "BTN_GEOLOC_ADDRESS": "Find my address on the map",
+    "USE_GEO_POINT": "Appear on {{'COMMON.APP_NAME'|translate}} maps?",
+    "LOADING_LOCATION": "Searching address...",
+    "LOCATION_DIVIDER": "Localisation",
+    "ADDRESS": "Address",
+    "ADDRESS_HELP": "Address (optional)",
+    "CITY": "City",
+    "CITY_HELP": "City, Country",
+    "DISTANCE": "Maximum distance around the city",
+    "DISTANCE_OPTION": "{{value}} km",
+    "MODAL": {
+      "TITLE": "Search address",
+      "SEARCH_HELP": "City, Country",
+      "ALTERNATIVE_RESULT_DIVIDER": "Alternative results for <b>{{address}}</b>:",
+      "POSITION": "lat/lon : {{lat}} {{lon}}"
+    },
+    "ERROR": {
+      "REQUIRED_FOR_LOCATION": "Required field to appear on the map",
+      "INVALID_FOR_LOCATION": "Unknown address",
+      "GEO_LOCATION_FAILED": "Unable to retrieve your current position. Please use the search button.",
+      "ADDRESS_LOCATION_FAILED": "Unable to retrieve the address position"
+    }
+  },
   "SUBSCRIPTION": {
     "SUBSCRIPTION_DIVIDER": "Online services",
     "SUBSCRIPTION_DIVIDER_HELP": "Online services offer optional additional services, delegated to a third party.",
@@ -432,12 +430,12 @@
       "UPDATE_COMMENT": "<span ng-class=\"{'gray': !notification.uid, 'positive':notification.uid }\"><i class=\"icon\" ng-class=\"{'ion-person': notification.uid, 'ion-key': !notification.uid}\"></i>&thinsp;{{name||uid||params[1]}}</span> has modified his comment on your referencing: <b>{{params[2]}}</b>",
       "NEW_REPLY_COMMENT": "<span ng-class=\"{'gray': !notification.uid, 'positive':notification.uid }\"><i class=\"icon\" ng-class=\"{'ion-person': notification.uid, 'ion-key': !notification.uid}\"></i>&thinsp;{{name||uid||params[1]}}</span> has replied to your comment on the referencing: <b>{{params[2]}}</b>",
       "UPDATE_REPLY_COMMENT": "<span ng-class=\"{'gray': !notification.uid, 'positive':notification.uid }\"><i class=\"icon\" ng-class=\"{'ion-person': notification.uid, 'ion-key': !notification.uid}\"></i>&thinsp;{{name||uid||params[1]}}</span> has modified his answer to your comment, on the referencing: <b>{{params[2]}}</b>"
-    },
-    "CONFIRM": {
-      "ES_USE_FALLBACK_NODE": "Data node <b>{{old}}</b> unreachable or invalid address.<br/><br/>Do you want to temporarily use the data node <b>{{new}}</b>?"
-    },
-    "ERROR": {
-      "ES_CONNECTION_ERROR": "Data node <b>{{server}}</b> unreachable or invalid address.<br/><br/>Cesium will continue to work, <b>without the Cesium+</b> extension (user profiles, private messages, maps and graphics).<br/><br/>Check your Internet connection, or change data node in <a class=\"positive\" ng-click=\"doQuickFix('settings')\">extension settings</a>."
     }
+  },
+  "CONFIRM": {
+    "ES_USE_FALLBACK_NODE": "Data node <b>{{old}}</b> unreachable or invalid address.<br/><br/>Do you want to temporarily use the data node <b>{{new}}</b>?"
+  },
+  "ERROR": {
+    "ES_CONNECTION_ERROR": "Data node <b>{{server}}</b> unreachable or invalid address.<br/><br/>Cesium will continue to work, <b>without the Cesium+</b> extension (user profiles, private messages, maps and graphics).<br/><br/>Check your Internet connection, or change data node in <a class=\"positive\" ng-click=\"doQuickFix('settings')\">extension settings</a>."
   }
 }
diff --git a/www/plugins/es/i18n/locale-es-ES.json b/www/plugins/es/i18n/locale-es-ES.json
index 7d076ba1499afac13ec4f01c191f75ad4f8a9056..5aebd80bd80f1d11b35a2b48832f4d04100ded96 100644
--- a/www/plugins/es/i18n/locale-es-ES.json
+++ b/www/plugins/es/i18n/locale-es-ES.json
@@ -16,10 +16,6 @@
       "NO_RESULT": "Ningúna notificación",
       "SHOW_ALL": "Ver todo",
       "LOAD_NOTIFICATIONS_FAILED": "Fracaso en la carga de las notificaciónes"
-    },
-    "ERROR": {
-      "REQUIRED_FOR_LOCATION": "Campo obligatorio para aparecer en el mapa",
-      "INVALID_FOR_LOCATION": "Dirección desconocida"
     }
   },
   "MENU": {
@@ -117,7 +113,11 @@
     "REPLY_TO_LINK": "En repuesta a ",
     "REPLY_TO_DELETED_COMMENT": "En repuesta a un comentario suprimido",
     "REPLY_COUNT": "{{replyCount}} repuestas",
-    "DELETED_COMMENT": "Comentario suprimido"
+    "DELETED_COMMENT": "Comentario suprimido",
+    "ERROR": {
+      "FAILED_SAVE_COMMENT": "Fracaso durante el respaldo del comentario",
+      "FAILED_REMOVE_COMMENT": "Fracaso durante la supresión del comentario"
+    }
   },
   "MESSAGE": {
     "REPLY_TITLE_PREFIX": "Rep: ",
@@ -264,6 +264,10 @@
     "LOCATION_DIVIDER": "Dirección",
     "SOCIAL_NETWORKS_DIVIDER": "Redes sociales y sitio web",
     "TECHNICAL_DIVIDER": "Informaciónes técnicas",
+    "BTN_SHOW_WOT": "Personas",
+    "BTN_SHOW_WOT_HELP": "Buscar personas",
+    "BTN_SHOW_PAGES": "Páginas",
+    "BTN_SHOW_PAGES_HELP": "Búsqueda de páginas",
     "BTN_NEW": "Creer una página",
     "MY_PAGES": "Mis páginas",
     "NO_PAGE": "Sin página",
@@ -324,8 +328,7 @@
       "REMOVE_RECORD_FAILED": "Fracaso en la supresión de la página",
       "SAVE_RECORD_FAILED": "Fracaso durante el respaldo",
       "RECORD_NOT_EXISTS": "Página inexistente",
-      "FAILED_SAVE_COMMENT": "Fracaso durante el respaldo del comentario",
-      "FAILED_REMOVE_COMMENT": "Fracaso durante la supresión del comentario",
+      "GEO_LOCATION_NOT_FOUND": "Ciudad o código postal no encontrado"
     },
     "INFO": {
       "RECORD_REMOVED" : "Página suprimida",
@@ -338,26 +341,14 @@
     "NO_PROFILE_DEFINED": "Ningún perfil Cesium+",
     "BTN_ADD": "Ingresar mi perfil",
     "BTN_EDIT": "Editar mi perfil",
-    "BTN_GEOLOC_ADDRESS": "Actualizar desde la dirección",
-    "USE_GEO_POINT": "Aparecer en la tarjeta {{'COMMON.APP_NAME'|translate}} ?",
-    "LOADING_LOCATION": "Encontrar la dirección ...",
     "UID": "Seudónimo",
     "TITLE": "Nombre, Apellido",
     "TITLE_HELP": "Nombre, Apellido",
     "DESCRIPTION": "A propósito de yo",
     "DESCRIPTION_HELP": "A propósito de yo...",
-    "ADDRESS": "Calle",
-    "ADDRESS_HELP": "Calle, complemento de dirección...",
-    "CITY": "Ciudad",
-    "CITY_HELP": "Ciudad, País",
     "SOCIAL_HELP": "http://...",
     "GENERAL_DIVIDER": "Informaciónes generales",
-    "LOCATION_DIVIDER": "Dirección",
     "SOCIAL_NETWORKS_DIVIDER": "Redes sociales, sitios web",
-    "LATITUDE": "Latitud",
-    "LATITUDE_HELP": "Latitud",
-    "LONGITUDE": "Longitud",
-    "LONGITUDE_HELP": "Longitud",
     "TECHNICAL_DIVIDER": "Informaciónes técnicas",
     "MODAL_AVATAR": {
       "TITLE": "Foto de perfil",
@@ -366,19 +357,11 @@
       "RESIZE_HELP": "<b>Encuadra la imagen</b>, si es necesario. Un clic mantenido sobre la imagen permite desplazarla. Hace un clic sobre la zona abajo a la izquierda para hacer zoom.",
       "RESULT_HELP": "<b>Aquí está el resultado</b> tal como está visible sobre su perfil :"
     },
-    "MODAL_LOCATION": {
-      "TITLE": "Búsqueda de dirección",
-      "SEARCH_HELP": "Ciudad, País",
-      "ALTERNATIVE_RESULT_DIVIDER": "Resultados alternativos para <b>{{address}}</b> :",
-      "POSITION": "Latitud/Longitud : {{lat}}  {{lon}}"
-    },
     "ERROR": {
       "LOAD_PROFILE_FAILED": "Fracaso en la carga del perfil usuario.",
       "SAVE_PROFILE_FAILED": "Fracaso durante el respaldo",
       "INVALID_SOCIAL_NETWORK_FORMAT": "Formato no tomado en cuenta : por favor, indica una dirección válida.<br/><br/>Ejemplos :<ul><li>- Una página Facebook (https://www.facebook.com/user)</li><li>- Una página web (http://www.misitio.es)</li><li>- Una dirección email (joe@dalton.com)</li></ul>",
-      "IMAGE_RESIZE_FAILED": "Fracaso durante el redimensionamiento de la imagen",
-      "GEO_LOCATION_FAILED": "No se puede obtener de su ubicación",
-      "ADDRESS_LOCATION_FAILED": "No se puede recuperar la posición de la dirección"
+      "IMAGE_RESIZE_FAILED": "Fracaso durante el redimensionamiento de la imagen"
     },
     "INFO": {
       "PROFILE_SAVED": "Perfil respaldado"
@@ -387,6 +370,30 @@
       "WARNING_PUBLIC_DATA": "Las informaciónes informadas en su perfil <b>están públicas</b> : visibles también por personas <b>no conectadas</b>.<br/>{{'PROFILE.PROFILE_DIVIDER_HELP'|translate}}"
     }
   },
+  "LOCATION": {
+    "BTN_GEOLOC_ADDRESS": "Actualizar desde la dirección",
+    "USE_GEO_POINT": "Aparecer en la tarjeta {{'COMMON.APP_NAME'|translate}} ?",
+    "LOADING_LOCATION": "Encontrar la dirección ...",
+    "LOCATION_DIVIDER": "Dirección",
+    "ADDRESS": "Calle",
+    "ADDRESS_HELP": "Calle, complemento de dirección...",
+    "CITY": "Ciudad",
+    "CITY_HELP": "Ciudad, País",
+    "DISTANCE": "Distancia máxima alrededor de la ciudad",
+    "DISTANCE_OPTION": "{{value}} km",
+    "MODAL": {
+      "TITLE": "Búsqueda de dirección",
+      "SEARCH_HELP": "Ciudad, País",
+      "ALTERNATIVE_RESULT_DIVIDER": "Resultados alternativos para <b>{{address}}</b> :",
+      "POSITION": "Latitud/Longitud : {{lat}}  {{lon}}"
+    },
+    "ERROR": {
+      "REQUIRED_FOR_LOCATION": "Campo obligatorio para aparecer en el mapa",
+      "INVALID_FOR_LOCATION": "Dirección desconocida",
+      "GEO_LOCATION_FAILED": "No se puede recuperar su ubicación Por favor usa el botón de búsqueda.",
+      "ADDRESS_LOCATION_FAILED": "No se puede recuperar la posición de la dirección."
+    }
+  },
   "SUBSCRIPTION": {
     "SUBSCRIPTION_DIVIDER": "Servicios en línea",
     "SUBSCRIPTION_DIVIDER_HELP": "Los servicios en línea ofrecen servicios adicionales opcionales, delegados a un tercero.",
diff --git a/www/plugins/es/i18n/locale-fr-FR.json b/www/plugins/es/i18n/locale-fr-FR.json
index 478731dcfa8e66ac63473d249f4a9f4fae3059d0..65a9f70bed7ae65aceae1973cbf1d8c3d70ab1af 100644
--- a/www/plugins/es/i18n/locale-fr-FR.json
+++ b/www/plugins/es/i18n/locale-fr-FR.json
@@ -16,14 +16,6 @@
       "NO_RESULT": "Aucune notification",
       "SHOW_ALL": "Voir tout",
       "LOAD_NOTIFICATIONS_FAILED": "Erreur de chargement des notifications"
-    },
-    "GEO": {
-      "DISTANCE": "Distance maximale autour de la ville",
-      "DISTANCE_OPTION": "{{value}} km"
-    },
-    "ERROR": {
-      "REQUIRED_FOR_LOCATION": "Champ obligatoire pour apparaître sur la carte",
-      "INVALID_FOR_LOCATION": "Adresse inconnue"
     }
   },
   "MENU": {
@@ -121,7 +113,11 @@
     "REPLY_TO_LINK": "En réponse à ",
     "REPLY_TO_DELETED_COMMENT": "En réponse à un commentaire supprimé",
     "REPLY_COUNT": "{{replyCount}} réponses",
-    "DELETED_COMMENT": "Commentaire supprimé"
+    "DELETED_COMMENT": "Commentaire supprimé",
+    "ERROR": {
+      "FAILED_SAVE_COMMENT": "Erreur lors de la sauvegarde du commentaire",
+      "FAILED_REMOVE_COMMENT": "Erreur lors de la suppression du commentaire"
+    }
   },
   "MESSAGE": {
     "REPLY_TITLE_PREFIX": "Rep: ",
@@ -332,8 +328,6 @@
       "REMOVE_RECORD_FAILED": "Erreur de la suppression de la page",
       "SAVE_RECORD_FAILED": "Erreur lors de la sauvegarde",
       "RECORD_NOT_EXISTS": "Page inexistante",
-      "FAILED_SAVE_COMMENT": "Erreur lors de la sauvegarde du commentaire",
-      "FAILED_REMOVE_COMMENT": "Erreur lors de la suppression du commentaire",
       "GEO_LOCATION_NOT_FOUND": "Ville ou code postal non trouvé"
     },
     "INFO": {
@@ -347,26 +341,14 @@
     "NO_PROFILE_DEFINED": "Aucun profil Cesium+",
     "BTN_ADD": "Saisir mon profil",
     "BTN_EDIT": "Editer mon profil",
-    "BTN_GEOLOC_ADDRESS": "Trouver mon adresse sur la carte",
-    "USE_GEO_POINT": "Apparaître sur les cartes {{'COMMON.APP_NAME'|translate}} ?",
-    "LOADING_LOCATION": "Recherche de l'adresse...",
     "UID": "Pseudonyme",
     "TITLE": "Nom, Prénom",
     "TITLE_HELP": "Nom, Prénom",
     "DESCRIPTION": "A propos de moi",
     "DESCRIPTION_HELP": "A propos de moi...",
-    "ADDRESS": "Rue",
-    "ADDRESS_HELP": "Rue, complément d'adresse...",
-    "CITY": "Ville",
-    "CITY_HELP": "Ville, Pays",
     "SOCIAL_HELP": "http://...",
     "GENERAL_DIVIDER": "Informations générales",
-    "LOCATION_DIVIDER": "Adresse",
     "SOCIAL_NETWORKS_DIVIDER": "Réseaux sociaux, sites web",
-    "LATITUDE": "Latitude",
-    "LATITUDE_HELP": "Latitude",
-    "LONGITUDE": "Longitude",
-    "LONGITUDE_HELP": "Longitude",
     "TECHNICAL_DIVIDER": "Informations techniques",
     "MODAL_AVATAR": {
       "TITLE": "Photo de profil",
@@ -375,19 +357,11 @@
       "RESIZE_HELP": "<b>Recadrez l'image</b>, si besoin. Un clic maintenu sur l'image permet de la déplacer. Cliquez sur la zone en bas à gauche pour zoomer.",
       "RESULT_HELP": "<b>Voici le résultat</b> tel que visible sur votre profil :"
     },
-    "MODAL_LOCATION": {
-      "TITLE": "Recherche de l'adresse",
-      "SEARCH_HELP": "Ville, Pays",
-      "ALTERNATIVE_RESULT_DIVIDER": "Résultats alternatifs pour <b>{{address}}</b> :",
-      "POSITION": "Latitude/Longitude : {{lat}}  {{lon}}"
-    },
     "ERROR": {
       "LOAD_PROFILE_FAILED": "Erreur de chargement du profil utilisateur.",
       "SAVE_PROFILE_FAILED": "Erreur lors de la sauvegarde",
       "INVALID_SOCIAL_NETWORK_FORMAT": "Format non pris en compte : veuillez indiquer une adresse valide.<br/><br/>Exemples :<ul><li>- Une page Facebook (https://www.facebook.com/user)</li><li>- Une page web (http://www.monsite.fr)</li><li>- Une adresse email (joe@dalton.com)</li></ul>",
-      "IMAGE_RESIZE_FAILED": "Erreur lors du redimensionnement de l'image",
-      "GEO_LOCATION_FAILED": "Impossible de récupérer votre position. Veuillez utiliser le bouton de recherche.",
-      "ADDRESS_LOCATION_FAILED": "Impossible de récupérer la position à partir de l'adresse"
+      "IMAGE_RESIZE_FAILED": "Erreur lors du redimensionnement de l'image"
     },
     "INFO": {
       "PROFILE_SAVED": "Profil sauvegardé"
@@ -396,6 +370,30 @@
       "WARNING_PUBLIC_DATA": "Les informations renseignées dans votre profil <b>sont publiques</b> : visibles y compris par des personnes <b>non connectées</b>.<br/>{{'PROFILE.PROFILE_DIVIDER_HELP'|translate}}"
     }
   },
+  "LOCATION": {
+    "BTN_GEOLOC_ADDRESS": "Trouver mon adresse sur la carte",
+    "USE_GEO_POINT": "Apparaître sur les cartes {{'COMMON.APP_NAME'|translate}} ?",
+    "LOADING_LOCATION": "Recherche de l'adresse...",
+    "LOCATION_DIVIDER": "Adresse",
+    "ADDRESS": "Rue",
+    "ADDRESS_HELP": "Rue, complément d'adresse...",
+    "CITY": "Ville",
+    "CITY_HELP": "Ville, Pays",
+    "DISTANCE": "Distance maximale autour de la ville",
+    "DISTANCE_OPTION": "{{value}} km",
+    "MODAL": {
+      "TITLE": "Recherche de l'adresse",
+      "SEARCH_HELP": "Ville, Pays",
+      "ALTERNATIVE_RESULT_DIVIDER": "Résultats alternatifs pour <b>{{address}}</b> :",
+      "POSITION": "Latitude/Longitude : {{lat}}  {{lon}}"
+    },
+    "ERROR": {
+      "REQUIRED_FOR_LOCATION": "Champ obligatoire pour apparaître sur la carte",
+      "INVALID_FOR_LOCATION": "Adresse inconnue",
+      "GEO_LOCATION_FAILED": "Impossible de récupérer votre position. Veuillez utiliser le bouton de recherche.",
+      "ADDRESS_LOCATION_FAILED": "Impossible de récupérer la position à partir de l'adresse"
+    }
+  },
   "SUBSCRIPTION": {
     "SUBSCRIPTION_DIVIDER": "Services en ligne",
     "SUBSCRIPTION_DIVIDER_HELP": "Les services en ligne offrent des services supplémentaires optionnels, délégués à un tiers.",
diff --git a/www/plugins/es/js/controllers/common-controllers.js b/www/plugins/es/js/controllers/common-controllers.js
index 7e765725eb2bfd5d7106eb28340b0b460ad2e507..6ca040a9dc509131c3e29967cc46ae180039e86f 100644
--- a/www/plugins/es/js/controllers/common-controllers.js
+++ b/www/plugins/es/js/controllers/common-controllers.js
@@ -1,24 +1,24 @@
 angular.module('cesium.es.common.controllers', ['ngResource', 'cesium.es.services'])
 
- .controller('ESPicturesEditCtrl', ESPicturesEditController)
+  .controller('ESPicturesEditCtrl', ESPicturesEditController)
 
- .controller('ESPicturesEditCtrl', ESPicturesEditController)
+  .controller('ESPicturesEditCtrl', ESPicturesEditController)
 
- .controller('ESSocialsEditCtrl', ESSocialsEditController)
+  .controller('ESSocialsEditCtrl', ESSocialsEditController)
 
- .controller('ESSocialsViewCtrl', ESSocialsViewController)
+  .controller('ESSocialsViewCtrl', ESSocialsViewController)
 
- .controller('ESCommentsCtrl', ESCommentsController)
+  .controller('ESCommentsCtrl', ESCommentsController)
 
- .controller('ESCategoryModalCtrl', ESCategoryModalController)
+  .controller('ESCategoryModalCtrl', ESCategoryModalController)
 
- .controller('ESAvatarModalCtrl', ESAvatarModalController)
+  .controller('ESAvatarModalCtrl', ESAvatarModalController)
 
- .controller('ESPositionEditCtrl', ESPositionEditController)
+  .controller('ESPositionEditCtrl', ESPositionEditController)
 
- .controller('ESLookupPositionCtrl', ESLookupPositionController)
+  .controller('ESLookupPositionCtrl', ESLookupPositionController)
 
- .controller('ESSearchPositionModalCtrl', ESSearchPositionModalController)
+  .controller('ESSearchPositionModalCtrl', ESSearchPositionModalController)
 ;
 
 
@@ -27,7 +27,7 @@ function ESPicturesEditController($scope, UIUtils, $q, Device) {
 
   $scope.selectNewPicture = function(inputSelector) {
     if (Device.enable){
-      openPicturePopup();
+      $scope.openPicturePopup();
     }
     else {
       var fileInput = angular.element(document.querySelector(inputSelector||'#pictureFile'));
@@ -53,14 +53,14 @@ function ESPicturesEditController($scope, UIUtils, $q, Device) {
     return $q(function(resolve, reject) {
       var file = event.target.files[0];
       UIUtils.image.resizeFile(file)
-      .then(function(imageData) {
-        $scope.pictures.push({
-          src: imageData,
-          isnew: true // use to prevent visibility hidden (if animation)
+        .then(function(imageData) {
+          $scope.pictures.push({
+            src: imageData,
+            isnew: true // use to prevent visibility hidden (if animation)
+          });
+          UIUtils.loading.hide(100);
+          resolve();
         });
-        UIUtils.loading.hide(100);
-        resolve();
-      });
     });
   };
 
@@ -112,7 +112,7 @@ function ESCategoryModalController($scope, UIUtils, $timeout, parameters) {
       $scope.loading = true;
       $scope.categories = $scope.allCategories.reduce(function(result, cat) {
         if (cat.parent && cat.name.toLowerCase().search(searchText) != -1) {
-            return result.concat(cat);
+          return result.concat(cat);
         }
         return result;
       }, []);
@@ -130,9 +130,9 @@ function ESCategoryModalController($scope, UIUtils, $timeout, parameters) {
   }
   else if (parameters && parameters.load) {
     parameters.load()
-    .then(function(res){
-      $scope.afterLoad(res);
-    });
+      .then(function(res){
+        $scope.afterLoad(res);
+      });
   }
 
 }
@@ -200,12 +200,12 @@ function ESCommentsController($scope, $filter, $state, $focus, UIUtils) {
     var from = 0;
     var size = -1;
     $scope.load($scope.id, {from: from, size: size, loadAvatarAllParent: false})
-    .then(function() {
-      // Set Motion
-      $scope.motion.show({
-        selector: '.card-avatar'
+      .then(function() {
+        // Set Motion
+        $scope.motion.show({
+          selector: '.card-avatar'
+        });
       });
-    });
   };
 
   $scope.save = function() {
@@ -222,7 +222,7 @@ function ESCommentsController($scope, $filter, $state, $focus, UIUtils) {
       .then(function() {
         $scope.comments.total++;
       })
-      .catch(UIUtils.onError('REGISTRY.ERROR.FAILED_SAVE_COMMENT'));
+      .catch(UIUtils.onError('COMMENTS.ERROR.FAILED_SAVE_COMMENT'));
   };
 
   $scope.share = function(event, comment) {
@@ -554,14 +554,14 @@ function ESPositionEditController($scope, csConfig, esGeo, ModalUtils) {
     };
 
     return ModalUtils.show(
-        'plugins/es/templates/common/modal_location.html',
-        'ESSearchPositionModalCtrl',
-        parameters,
-        {
-          focusFirstInput: true
-          //,scope: $scope
-        }
-      )
+      'plugins/es/templates/common/modal_location.html',
+      'ESSearchPositionModalCtrl',
+      parameters,
+      {
+        focusFirstInput: true
+        //,scope: $scope
+      }
+    )
       .then($scope.updateGeoPoint);
   };
 }
@@ -576,35 +576,35 @@ function ESLookupPositionController($scope, $q, csConfig, esGeo, ModalUtils) {
 
   $scope.geoDistanceLabels = {
     "5km": {
-      labelKey: 'COMMON.GEO.DISTANCE_OPTION',
+      labelKey: 'LOCATION.DISTANCE_OPTION',
       labelParams: {value: 5}
     },
     "10km": {
-      labelKey: 'COMMON.GEO.DISTANCE_OPTION',
+      labelKey: 'LOCATION.DISTANCE_OPTION',
       labelParams: {value: 10}
     },
     "20km": {
-      labelKey: 'COMMON.GEO.DISTANCE_OPTION',
+      labelKey: 'LOCATION.DISTANCE_OPTION',
       labelParams: {value: 20}
     },
     "30km": {
-      labelKey: 'COMMON.GEO.DISTANCE_OPTION',
+      labelKey: 'LOCATION.DISTANCE_OPTION',
       labelParams: {value: 30}
     },
     "50km": {
-      labelKey: 'COMMON.GEO.DISTANCE_OPTION',
+      labelKey: 'LOCATION.DISTANCE_OPTION',
       labelParams: {value: 50}
     },
     "100km": {
-      labelKey: 'COMMON.GEO.DISTANCE_OPTION',
+      labelKey: 'LOCATION.DISTANCE_OPTION',
       labelParams: {value: 100}
     },
     "250km": {
-      labelKey: 'COMMON.GEO.DISTANCE_OPTION',
+      labelKey: 'LOCATION.DISTANCE_OPTION',
       labelParams: {value: 250}
     },
     "500km": {
-      labelKey: 'COMMON.GEO.DISTANCE_OPTION',
+      labelKey: 'LOCATION.DISTANCE_OPTION',
       labelParams: {value: 500}
     }
   };
@@ -616,19 +616,9 @@ function ESLookupPositionController($scope, $q, csConfig, esGeo, ModalUtils) {
     loadingPosition = true;
 
     // No address, so try to localize by device
-    if (!searchText) {
-      return esGeo.point.current()
-        .then($scope.updateGeoPoint)
-        .then(function() {
-          loadingPosition = false;
-        })
-        .catch(function(err) {
-          console.error(err); // Silent
-          loadingPosition = false;
-        });
-    }
-
-    return esGeo.point.searchByAddress(searchText)
+    var promise = !searchText ?
+      esGeo.point.current() :
+      esGeo.point.searchByAddress(searchText)
       .then(function(res) {
         if (res && res.length == 1) {
           return res[0];
@@ -638,39 +628,43 @@ function ESLookupPositionController($scope, $q, csConfig, esGeo, ModalUtils) {
           results: res||[],
           forceFallback: !res || !res.length // force fallback search first
         })
-        .then(function(res) {
-          // Compute point name
-          if (res && res.address && res.address.city) {
-            var cityParts = [res.address.city];
-            if (res.address.postcode) {
-              cityParts.push(res.address.postcode);
+          .then(function(res) {
+            // Compute point name
+            if (res && res.address && res.address.city) {
+              var cityParts = [res.address.city];
+              if (res.address.postcode) {
+                cityParts.push(res.address.postcode);
+              }
+              if (res.address.country != defaultCountry) {
+                cityParts.push(res.address.country);
+              }
+              res.shortName = cityParts.join(', ');
             }
-            if (res.address.country != defaultCountry) {
-              cityParts.push(res.address.country);
-            }
-            res.shortName = cityParts.join(', ');
-          }
-          return res;
-        });
-    })
-    .then(function(res) {
+            return res;
+          });
+      });
 
-      loadingPosition = false;
+    promise
+      .then(function(res) {
 
-      // user cancel
-      if (!res || !res.lat || !res.lon) return;
+        loadingPosition = false;
 
-      return {
-        lat: parseFloat(res.lat),
-        lon: parseFloat(res.lon),
-        name: res.shortName
-      };
+        // user cancel
+        if (!res || !res.lat || !res.lon) return;
 
-    })
-    .catch(function(err) {
-      console.error(err); // Silent
-      loadingPosition = false;
-    });
+        return {
+          lat: parseFloat(res.lat),
+          lon: parseFloat(res.lon),
+          name: res.shortName
+        };
+
+      })
+      .catch(function(err) {
+        console.error(err); // Silent
+        loadingPosition = false;
+      });
+
+    return promise;
   };
 
 
@@ -731,9 +725,9 @@ function ESSearchPositionModalController($scope, $q, $translate, esGeo, paramete
 
     // Execute the given query
     return ((firstSearch && $scope.search.forceFallback && $scope.search.results) ?
-      $q.when($scope.search.results) :
-      esGeo.point.searchByAddress(text)
-    )
+        $q.when($scope.search.results) :
+        esGeo.point.searchByAddress(text)
+      )
       .then(function(res) {
         if (res && res.length || !fallbackText) return res;
 
diff --git a/www/plugins/es/js/services/settings-services.js b/www/plugins/es/js/services/settings-services.js
index 00ceecd2e002663a5de1dea39c5062f231a3d2d5..4fb4aa0a684be3b2b093f25cc1630af1cf66e5ba 100644
--- a/www/plugins/es/js/services/settings-services.js
+++ b/www/plugins/es/js/services/settings-services.js
@@ -17,7 +17,7 @@ angular.module('cesium.es.settings.services', ['cesium.services', 'cesium.es.htt
   var
     SETTINGS_SAVE_SPEC = {
       includes: ['locale', 'showUDHistory', 'useRelative', 'useLocalStorage', 'expertMode', 'logoutIdle'],
-      excludes: ['time'],
+      excludes: ['timeout', 'cacheTimeMs', 'time', 'login', 'build'],
       plugins: {
         es: {
           excludes: ['enable', 'host', 'port', 'wsPort', 'fallbackNodes']
diff --git a/www/plugins/es/templates/common/edit_position.html b/www/plugins/es/templates/common/edit_position.html
index 50598dc78b6873d36bfcc2d82a0f1fd78b369c13..0e376d13aa57b6a75d0f935d3351ff92ea02d10d 100644
--- a/www/plugins/es/templates/common/edit_position.html
+++ b/www/plugins/es/templates/common/edit_position.html
@@ -1,9 +1,9 @@
-<div class="item item-divider" translate>REGISTRY.LOCATION_DIVIDER</div>
+<div class="item item-divider" translate>LOCATION.LOCATION_DIVIDER</div>
 
 <!-- address -->
 <ion-item class="item-input item-floating-label item-button-right">
-  <span class="input-label">{{'PROFILE.ADDRESS' | translate}}</span>
-  <textarea placeholder="{{'PROFILE.ADDRESS_HELP' | translate}}"
+  <span class="input-label">{{'LOCATION.ADDRESS' | translate}}</span>
+  <textarea placeholder="{{'LOCATION.ADDRESS_HELP' | translate}}"
             ng-model="formData.address"
             ng-model-options="{ debounce: 350 }"
             rows="4" cols="10">
@@ -13,8 +13,8 @@
 <!-- city -->
 <div class="item item-input item-floating-label"
      ng-class="{'item-input-error': form.$submitted && form.geoPoint.$invalid}">
-  <span class="input-label" translate>PROFILE.CITY</span>
-  <input type="text" placeholder="{{'PROFILE.CITY_HELP'|translate}}"
+  <span class="input-label" translate>LOCATION.CITY</span>
+  <input type="text" placeholder="{{'LOCATION.CITY_HELP'|translate}}"
          ng-model="formData.city"
          ng-model-options="{ updateOn: 'blur' }"
          ng-change="onCityChanged()">
@@ -28,12 +28,12 @@
      ng-show="form.$submitted && form.geoPoint.$error"
      ng-messages="form.geoPoint.$error">
   <div class="form-error" ng-message="required">
-    <span translate="COMMON.ERROR.REQUIRED_FOR_LOCATION" ng-if="!formData.city"></span>
-    <span translate="COMMON.ERROR.INVALID_FOR_LOCATION" ng-if="formData.city"></span>
+    <span translate="LOCATION.ERROR.REQUIRED_FOR_LOCATION" ng-if="!formData.city"></span>
+    <span translate="LOCATION.ERROR.INVALID_FOR_LOCATION" ng-if="formData.city"></span>
   </div>
   <div class="form-error" ng-message="geoPoint">
-    <span translate="COMMON.ERROR.REQUIRED_FOR_LOCATION" ng-if="!formData.city"></span>
-    <span translate="COMMON.ERROR.INVALID_FOR_LOCATION" ng-if="formData.city"></span>
+    <span translate="LOCATION.ERROR.REQUIRED_FOR_LOCATION" ng-if="!formData.city"></span>
+    <span translate="LOCATION.ERROR.INVALID_FOR_LOCATION" ng-if="formData.city"></span>
   </div>
 </div>
 
@@ -48,10 +48,10 @@
                   ng-change="onUseGeopointChanged()"
                   class="item item-border-large done in">
       <div class="item-content">
-        <span translate>PROFILE.USE_GEO_POINT</span>
+        <span translate>LOCATION.USE_GEO_POINT</span>
         <h4 class="gray" ng-if="formPosition.loading">
           <ion-spinner class="icon ion-spinner-small" icon="android"></ion-spinner>
-          {{'PROFILE.LOADING_LOCATION'|translate}}
+          {{'LOCATION.LOADING_LOCATION'|translate}}
         </h4>
       </div>
     </ion-checkbox>
@@ -61,7 +61,7 @@
     <div class="row text-center">
 
       <a class="button button-stable button-small-padding"
-         title="{{'PROFILE.BTN_GEOLOC_ADDRESS'|translate}}"
+         title="{{'LOCATION.BTN_GEOLOC_ADDRESS'|translate}}"
          ng-disabled="!formPosition.enable"
          ng-click="openSearchLocationModal()">
         <i class=" icon ion-home" style="left: 15px;"></i>
diff --git a/www/plugins/es/templates/user/items_profile.html b/www/plugins/es/templates/user/items_profile.html
index 2354e461caf00717774b104e6dbb6f91926dedae..37332ebdc898a6a2a9dbbfcf22b43f3854094b22 100644
--- a/www/plugins/es/templates/user/items_profile.html
+++ b/www/plugins/es/templates/user/items_profile.html
@@ -16,7 +16,7 @@
 <!-- Localisation -->
 <div class="item" ng-if="formData.profile.address || formData.profile.city"
      copy-on-click="{{formData.profile.address ? formData.profile.address + '&#10;' : ''}}{{formData.profile.city}}">
-  <span class="gray" translate>PROFILE.LOCATION_DIVIDER</span>
+  <span class="gray" translate>LOCATION.LOCATION_DIVIDER</span>
   <h3>
     <span class="text-keep-lines" ng-if="formData.profile.address">{{formData.profile.address}}<br/></span>
     {{formData.profile.city}}