diff --git a/src/main/java/org/olat/core/commons/modules/bc/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/core/commons/modules/bc/_i18n/LocalStrings_fr.properties
index f797f3f3dab52a8c5d1daf32fea89d6e2783b333..4698a6a3d8daa0cfeb4f3226232838f8f7c4f548 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/core/commons/modules/bc/_i18n/LocalStrings_fr.properties
@@ -1,4 +1,4 @@
-#Sun Nov 08 12:27:44 CET 2015
+#Fri Apr 28 11:33:33 CEST 2017
 Directory=Dossier
 FileDeleteFailed=fichier/dossier <b>{0}</b> n'a pas pu \u00EAtre supprim\u00E9.
 FileDeleted=Le fichier/dossier <b>{0}</b> a \u00E9t\u00E9 supprim\u00E9 avec succ\u00E8s.
@@ -46,6 +46,7 @@ cfile.name.noextension=Ce fichier ne contient pas d'extension de nom de fichier.
 cfile.name.noname=Aucun nom de fichier sp\u00E9cifi\u00E9.
 cfile.name.notvalid=File name not valid, please remove any path info\!
 cfile.name.notvalid.cannot.edit.metadata=Ce nom de fichier contient des caract\u00E8res non permis, vous ne pouvez donc pas \u00E9diter les m\u00E9tadonn\u00E9es.
+cfile.name.notvalid.uri=Ce nom de fichier contient des caract\u00E8res interdits comme / , \: ou un espace blanc. Supprimer-les, s'il vous pla\u00EEt, avant de t\u00E9l\u00E9charger le fichier \u00E0 nouveau.
 cfile.name.notvalidchars=Ce nom de fichier contient des caract\u00E8res interdits "{0}". S'il vous pla\u00EEt supprimer les avant de t\u00E9l\u00E9charger le fichier \u00E0 nouveau.
 checkall=Tout s\u00E9lectionner 
 command.closepreview=Fermer l'aper\u00E7u
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_fr.properties
index 88aafa1d84ac3a87367163527cf1b380cff203d5..72446f3dc5299efe43265cf1ea5ba68ea1ed93b7 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_fr.properties
@@ -1,4 +1,4 @@
-#Thu Mar 09 17:21:46 CET 2017
+#Fri Apr 28 11:35:35 CEST 2017
 checklist=Listes de contr\u00F4le
 cl=Listes de contr\u00F4le
 cmd.download=T\u00E9l\u00E9charger
@@ -33,7 +33,10 @@ course.res.feedback=Le fichier <b>{0}</b> contenant les r\u00E9sultats se trouve
 course.res.intro=Cliquez sur 'D\u00E9marrer' pour archiver les r\u00E9sultats finaux des tests, des \u00E9valuations et des devoirs.
 course.res.title=R\u00E9sultats du cours
 dialog=Fichiers discut\u00E9s
+download.options=Configurer les options de t\u00E9l\u00E9chargement
 fo=Forums
+form.poscol.extra=Montrer les questions s\u00E9lectionn\u00E9es (seulement QTI 1.2)
+form.title=Configurer les options
 gta=Devoirs de groupe
 index.intro=Gr\u00E2ce \u00E0 cet outil, diff\u00E9rentes donn\u00E9es de ce cours OLAT peuvent \u00EAtre archiv\u00E9es. <p> Veuillez choisir une entr\u00E9e du menu de gauche pour commencer.
 index.title=Outil d'archivage des donn\u00E9es
@@ -76,7 +79,9 @@ menu.scorm=R\u00E9sultats SCORM
 menu.scorm.alt=R\u00E9sultats SCORM
 menu.wikis=Wikis
 menu.wikis.alt=Archiver Wikis
+nodechoose.config.error=Choisissez s'il vous pla\u00EEt au moins une option.
 nodechoose.intro.cl=S\u00E9lectionnez avec le dialogue suivant l'\u00E9l\u00E9ment de cours liste de contr\u00F4le que vous souhaitez \u00E9valuer.
+nodechoose.intro.config=L'archive contient\: tous les utilisateurs et toutes les questions. Modifier les options de t\u00E9l\u00E9chargement avec le bouton ci-dessus.
 nodechoose.intro.dialog=S\u00E9lectionnez un \u00E9l\u00E9ment de cours pour archiver ses discussions de fichiers.
 nodechoose.intro.fo=S\u00E9lectionnez un \u00E9l\u00E9ment de cours pour archiver son forum.
 nodechoose.intro.gta=S\u00E9lectionnez un \u00E9l\u00E9ment de cours pour archiver ses devoirs de groupe.
diff --git a/src/main/java/org/olat/group/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/group/ui/_i18n/LocalStrings_fr.properties
index 36ba6c2316a81bca3464ce44220cf076803b9795..fd95ad128ee449300aad04f682d76cfd66e47281 100644
--- a/src/main/java/org/olat/group/ui/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/group/ui/_i18n/LocalStrings_fr.properties
@@ -1,4 +1,4 @@
-#Thu Sep 03 11:24:42 CEST 2015
+#Fri Apr 28 10:58:43 CEST 2017
 LearningGroup=Groupe d'\u00E9tude
 action.choose=S\u00E9lectionner
 admin.menu.title=Groupes
@@ -70,7 +70,6 @@ groupsPortlet.no_member=Vous avez \u00E9t\u00E9 d\u00E9sinscrit de ce groupe ou
 groupsPortlet.nogroups=Vous n'\u00EAtes dans aucun groupe
 groupsPortlet.showAll=Afficher tous
 groupsPortlet.title=Mes groupes
-
 leaving.group=Les membres peuvent quitter le groupe
 leaving.group.authors=Permettre aux participants de quitter les groupes cr\u00E9\u00E9s par les auteurs
 leaving.group.learners=Permettre aux membres de quitter les groupes cr\u00E9\u00E9s par les utilisateurs
@@ -103,6 +102,7 @@ notification.mail.added.self.body=*** Ceci est un message g\u00E9n\u00E9r\u00E9
 notification.mail.added.self.subject=Groupe d'\u00E9tude OLAT $groupname
 notification.mail.added.subject=Groupe d'\u00E9tude OLAT $groupname
 notification.mail.error=Le courrier n'a pas pu \u00EAtre envoy\u00E9. Pri\u00E8re d'informer l'utilisateur personnellement.
+notification.mail.no.ressource=Ce groupe n'est utilis\u00E9 dans aucun objet didactique.
 notification.mail.removed.body=*** Ceci est un message g\u00E9n\u00E9r\u00E9 de mani\u00E8re automatique. Veuillez svp ne pas r\u00E9pondre \u00E0 ce message *** \r\n\r\nVous avez \u00E9t\u00E9 d\u00E9sinscrit(e) par {0} {1} ({2}) du groupe d'\u00E9tude \: \r\n\r\nNom du groupe\: $groupname\r\nDescription\: $groupdescription\r\n\r\nPour toute question, veuillez contacter svp {0} {1} ({2}). \r\n\r\nCe groupe d'\u00E9tude est utilis\u00E9 pour les ressources didactiques suivantes \: \r\n\r\n$courselist
 notification.mail.removed.self.body=*** Ceci est un message g\u00E9n\u00E9r\u00E9 de mani\u00E8re automatique. Veuillez svp ne pas r\u00E9pondre \u00E0 ce message *** \r\n\r\nVous vous \u00EAtes d\u00E9sinscrit(e) du groupe d'\u00E9tude\: \r\n\r\nNom du groupe\: $groupname\r\nDescription\: $groupdescription\r\n\r\nCe groupe d'\u00E9tude est utilis\u00E9 pour les ressources didactiques suivantes\:\r\n\r\n$courselist
 notification.mail.removed.self.subject=Groupe d'\u00E9tude OLAT $groupname\: Vous avez \u00E9t\u00E9 d\u00E9sinscrit-e.
diff --git a/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_de.properties
index 646df41b944efb44956d0721ac2cecaff9d35df1..7505630b1f5e4d56b45bc3f39560d1da83a265b7 100644
--- a/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_de.properties
@@ -90,7 +90,6 @@ email.send=Schicken
 email.function=Emailfunktion
 email.function.all=Emailfunktion f\u00FCr alle Benutzer freischalten
 email.function.coachAndAdmin=Emailfunktion nur f\u00FCr Betreuer und Administratoren freischalten
-yemail.title=E-Mail senden
 members.to=Teilnehmer "{0}" aus Gruppe "{1}"
 msg.send.ok=$org.olat.modules.co\:msg.send.ok
 error.msg.send.partially.nok=$org.olat.modules.co\:error.msg.send.partially.nok
diff --git a/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_en.properties
index c34f278cdd79259dd6fcf9dc339435b2c8714241..d17ec071cd384bb2cd1593dd81d5560e570d1b9a 100644
--- a/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_en.properties
@@ -90,7 +90,6 @@ email.send=Send
 email.function=Email function
 email.function.all=Enable email for all users
 email.function.coachAndAdmin=Enable email for all users for coaches and admins
-email.title=Send email
 members.to=Members "{0}" of group "{1}"
 msg.send.ok=$org.olat.modules.co\:msg.send.ok
 error.msg.send.partially.nok=$org.olat.modules.co\:error.msg.send.partially.nok
diff --git a/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_fr.properties
index 501995c091c28835b946952f264c78c0807f5abf..5e67e21c8b4cb6560ce8ff3f6a9d9342b8ccbbf4 100644
--- a/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_fr.properties
@@ -107,4 +107,3 @@ userlist.show.no.waitinglist.text=pas visible
 userlist.show.no.waitinglist.title=Liste d'attente
 userlist.title=Membres du groupe
 wizard.step1.send_option.member=Participants et coachs du groupe
-yemail.title=Envoyer un courriel
diff --git a/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_it.properties
index f229e0ba9c0f53fe822e528d34e0d08e04e30dac..341486af62da7f6834970df77cbb15521a3fd5b8 100644
--- a/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_it.properties
+++ b/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_it.properties
@@ -15,7 +15,6 @@ email.function=Funzione e-mail
 email.function.all=Abilitare email per tutti gli utenti
 email.function.coachAndAdmin=Abilitare e-mail a tutti gli utenti per tutori e amministratori
 email.send=Inviare
-email.title=Invio email
 error.msg.send.553=$org.olat.modules.co\:error.msg.send.553
 error.msg.send.invalid.rcps=$org.olat.modules.co\:error.msg.send.invalid.rcps
 error.msg.send.nok=$org.olat.modules.co\:error.msg.send.nok
diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties
index a69f46eda1469e6e7010e623dbd94d75e9b2767b..4de9c4ab88e0ae1be3d9fdb895fc0fc3aadea8f0 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties
@@ -1,4 +1,4 @@
-#Thu Apr 06 15:22:02 CEST 2017
+#Fri Apr 28 11:30:05 CEST 2017
 add.match.column=Ajouter une colonne
 add.match.row=Ajouter une ligne
 answers=R\u00E9ponses
@@ -17,6 +17,8 @@ error.import.question=Une erreur inattendue s'est produite pendant l'importation
 error.lock=Ce test / questionnaire est \u00E9dit\u00E9 par {0} en ce moment et est bloqu\u00E9.
 error.lock.title=Test bloqu\u00E9
 error.mimetype=$org.olat.core.commons.modules.bc\:WrongMimeType
+error.missing.fib=La question doit contenir au moins un text \u00E0 trou ou une entr\u00E9e num\u00E9rique.
+error.missing.hottext=La question doit contenir au moins un hottext.
 error.need.correct.answer=Vous devez s\u00E9lectionner au moins une r\u00E9ponse comme correcte.
 error.positive.double=Seul des nombres positives sont permis. Par exemple\: 15.0, 5.5, 10
 error.singlechoice=En s\u00E9lectionner exactement une
@@ -35,7 +37,9 @@ fib.tolerance.low=Limite inf\u00E9rieure
 fib.tolerance.mode=Type de tol\u00E9rance
 fib.tolerance.mode.absolute=Absolu
 fib.tolerance.mode.absolute.example=Un nombre, par exemple 1.5 ou 1322
+fib.tolerance.mode.absolute.help=La solution est accept\u00E9 si elle se trouve entre la limite sup\u00E9rieure et inf\u00E9rieure. La limite est un nombre absolu. Exemple\: la solution est 20, la limite inf\u00E9rieure 2, la limite sup\u00E9rieure 2 &arr; toutes les solutions entre 18 et 22 sont correctes. La limite inf\u00E9rieure est soustraite \u00E0 la solution, la limite sup\u00E9rieure addition\u00E9e.
 fib.tolerance.mode.exact=Exact
+fib.tolerance.mode.exact.help=La solution doit \u00EAtre exactement celle entr\u00E9e sous "Solution".
 fib.tolerance.mode.relative=Relatif
 fib.tolerance.mode.relative.example=Pourcentage, par example 15 ou 99.0
 fib.tolerance.up=Limite sup\u00E9rieur
diff --git a/src/main/java/org/olat/modules/fo/ui/ForumController.java b/src/main/java/org/olat/modules/fo/ui/ForumController.java
index 867f17f5ef0ddadd4be22768f32027be632331ff..b6bc42177f18c7803dde99a7baa9a64dc1aa2369 100644
--- a/src/main/java/org/olat/modules/fo/ui/ForumController.java
+++ b/src/main/java/org/olat/modules/fo/ui/ForumController.java
@@ -208,6 +208,7 @@ public class ForumController extends BasicController implements GenericEventList
 			}
 		} else if(viewCtrl == source) {
 			if(event == Event.BACK_EVENT) {
+				reloadThreadList |= viewCtrl.hasMarkedNewMessages();
 				doThreadList(ureq);
 			} else if(event instanceof DeleteThreadEvent) {
 				reloadThreadList = true;
@@ -219,6 +220,7 @@ public class ForumController extends BasicController implements GenericEventList
 			}
 		} else if(userViewCtrl == source) {
 			if(event == Event.BACK_EVENT) {
+				reloadThreadList |= userViewCtrl.hasMarkedNewMessages();
 				cleanUpMessageViews();
 				doUserList(ureq);
 			} else if(event instanceof SelectMessageEvent) {
diff --git a/src/main/java/org/olat/modules/fo/ui/MessageListController.java b/src/main/java/org/olat/modules/fo/ui/MessageListController.java
index 4ddd179269ae1e10b68b4db1d4e2699395d7e4bc..fec754d4dbf0c883818c746d07f108e97a27a4a2 100644
--- a/src/main/java/org/olat/modules/fo/ui/MessageListController.java
+++ b/src/main/java/org/olat/modules/fo/ui/MessageListController.java
@@ -148,6 +148,7 @@ public class MessageListController extends BasicController implements GenericEve
 	
 	private Message thread;
 	private boolean reloadList;
+	private boolean hasMarkedNewMessages;
 	
 	private final Forum forum;
 	private final boolean guestOnly;
@@ -211,6 +212,13 @@ public class MessageListController extends BasicController implements GenericEve
 		CoordinatorManager.getInstance().getCoordinator().getEventBus().registerFor(this, getIdentity(), forum);
 	}
 	
+	/**
+	 * @return true if the controller has marked some new messages as seen
+	 */
+	public boolean hasMarkedNewMessages() {
+		return hasMarkedNewMessages;
+	}
+	
 	@Override
 	protected void doDispose() {
 		CoordinatorManager.getInstance().getCoordinator().getEventBus().deregisterFor(this, forum);
@@ -495,24 +503,7 @@ public class MessageListController extends BasicController implements GenericEve
 	 */	
 	private void orderMessagesThreaded(List<MessageLight> messages, List<MessageLight> orderedList, MessageLight startMessage) {
 		if (messages == null || orderedList == null || startMessage == null) return;
-		/*
-		Iterator<MessageLight> iterMsg = messages.iterator();
-		while (iterMsg.hasNext()) {
-			MessageLight msg = iterMsg.next();
-			if (msg.getParentKey() == null) {
-				orderedList.add(msg);
-				List<MessageLight> copiedMessages = new ArrayList<>(messages);
-				copiedMessages.remove(msg);
-				messages = copiedMessages;
-				continue;
-			}
-			if ((msg.getParentKey() != null) && (msg.getParentKey().equals(startMessage.getKey()))) {
-				orderedList.add(msg);
-				orderMessagesThreaded(messages, orderedList, msg);
-			}
-		}
-		*/
-		
+
 		Map<Long, MessageNode> messagesMap = new HashMap<>();
 		if(startMessage != null) {
 			messagesMap.put(startMessage.getKey(), new MessageNode(startMessage));
@@ -563,6 +554,7 @@ public class MessageListController extends BasicController implements GenericEve
 	private void markRead(MessageLight message) {
 		if(!guestOnly) {
 			forumManager.markAsRead(getIdentity(), forum, message);
+			hasMarkedNewMessages = true;
 		}
 	}
 	
diff --git a/src/main/java/org/olat/modules/gotomeeting/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/modules/gotomeeting/ui/_i18n/LocalStrings_fr.properties
index b02bc4771807532d20482f3346cb2e8575ba00b8..1054144afd02ffcf34a2e815c1de82224726773e 100644
--- a/src/main/java/org/olat/modules/gotomeeting/ui/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/modules/gotomeeting/ui/_i18n/LocalStrings_fr.properties
@@ -1,4 +1,4 @@
-#Thu May 05 10:04:51 CEST 2016
+#Fri Apr 28 11:31:26 CEST 2017
 add.my.account=J'ai un compte GoToMeeting
 add.organizer=Ajoutez un organisateur
 add.training=Ajoutez une formation
@@ -8,6 +8,7 @@ confirm.delete.meeting=Voulez-vous vraiment effacer la formation "{0}"?
 confirm.remove.organizer=Voulez-vous vraiment enlever l'organisateur "{0}" du syst\u00E8me?
 download=T\u00E9l\u00E9charger
 enabled=
+error.code.InvalidToken=L'authentification de votre organisateur n'est probablement plus valable et doit \u00EAtre renouvel\u00E9e. Demandez s'il vous pla\u00EEt \u00E0 votre administrateur de le v\u00E9rifier.
 error.code.InvalidTrainingDatesMaxDuration=La formation ne peut pas durer plus de 24 heures.
 error.code.NoSuchTraining=La formation n'a pas pu \u00EAtre trouv\u00E9e.
 error.code.TrainingInSession=La formation a d\u00E9j\u00E0 commenc\u00E9.
diff --git a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_fr.properties
index 97907c28f80fbd5be4ab5c28e714179ab3be2d01..f399b33c5ab5c8f94875d7aba41dd61dacda2642 100644
--- a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_fr.properties
@@ -1,4 +1,4 @@
-#Wed Mar 08 11:23:46 CET 2017
+#Fri Apr 28 11:01:21 CEST 2017
 add=+
 add.to.list=Ajouter \u00E0 la liste
 applications=Utilisations
@@ -72,14 +72,18 @@ item.deleted=La question a \u00E9t\u00E9 effac\u00E9e.
 item.level=Niveau
 item.pooled=La question {0} a \u00E9t\u00E9 ajout\u00E9e au pool.
 item.shared=La question {0} a \u00E9t\u00E9 partag\u00E9e.
+item.type.drawing=Dessin
 item.type.essay=Dissertation
 item.type.fib=Texte \u00E0 trous
 item.type.hotspot=Hotspot
+item.type.hottext=Hottext
 item.type.kprim=KPrim
+item.type.match=Match
 item.type.mc=Choix multiple
 item.type.numerical=Entr\u00E9e num\u00E9rique
 item.type.sc=Choix unique
 item.type.unkown=Inconnu
+item.type.upload=T\u00E9l\u00E9verser un fichier
 lifecycle=Lifecycle
 lifecycle.status=Statut
 lifecycle.status.draft=Ebauche
diff --git a/src/main/java/org/olat/user/propertyhandlers/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/user/propertyhandlers/ui/_i18n/LocalStrings_fr.properties
index 79cfa4832e93d0c883092ba05482a4ec514fedef..2b3610117637f70e2afb31fedb9cb8bf686b1adb 100644
--- a/src/main/java/org/olat/user/propertyhandlers/ui/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/user/propertyhandlers/ui/_i18n/LocalStrings_fr.properties
@@ -1,4 +1,4 @@
-#Wed Mar 08 11:34:13 CET 2017
+#Fri Apr 28 11:35:59 CEST 2017
 error.phone.invalid=Le num\u00E9ro n'est pas valide.
 error.sms.change.confirm.token=Le code n'est pas valide.
 sms.change.confirm=Entrer le code envoy\u00E9 par SMS
@@ -48,3 +48,4 @@ upc.reset.configs.note=Remarque\: lorsque vous chargez un r\u00E9glage pr\u00E9d
 upc.translate=Traduire
 upc.up=En haut
 upc.userreadonly=Utilisateur en lecture seule
+warning.message.not.send=Le SMS n'a pas pu \u00EAtre envoy\u00E9.