diff --git a/src/main/java/org/olat/admin/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/admin/_i18n/LocalStrings_fr.properties
index 8fd52f700ef6097b182da53abae18565b8fec46c..386f45712bf34f89e8bb7249a1b2f3a5f398da8a 100644
--- a/src/main/java/org/olat/admin/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/admin/_i18n/LocalStrings_fr.properties
@@ -1,4 +1,4 @@
-#Fri Mar 23 15:13:55 CET 2018
+#Mon Aug 26 20:05:32 CEST 2019
 bulkuserreplay.chkbx.onoff=Checkbox activ\u00E9e signifie Replay ON et AJAX OFF
 bulkuserreplay.tt=Nom d'utilisateur ligne par ligne (sans virgule ou similaires)
 data.no.save=Attention\: Les modifications seront perdues apr\u00E8s le red\u00E9marrage d'OLAT\! Pour enregistrer les r\u00E9glages de fa\u00E7on permanente, il faut enregistrer les modifications dans le fichier olat.properties. Dans une version future, un enregistrement automatique sera possible.
@@ -62,6 +62,7 @@ menu.parent.customizing=Personnalisation
 menu.parent.customizing.alt=Personnalisation d'OpenOlat
 menu.parent.maintenance=Maintenance du syst\u00E8me
 menu.parent.maintenance.alt=Maintenance du syst\u00E8me et options suppl\u00E9mentaires
+menu.payments=Modules de paiement
 menu.quota=Gestion des quotas
 menu.quota.alt=Gestion des quotas
 menu.registration=Enregistrement du syst\u00E8me
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 001b9326428c7aae774fc69599b95d0e76ad684a..e2baac9010bbf76eb70a1c6b690bb413cfd8073f 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,284 +1,286 @@
-#Mon Aug 19 18:03:55 CEST 2019
-form.imd.correct.title=Titre
-warning.feedback.cutvalue=Le feedback est bas\u00E9 sur la valeur "Points n\u00E9cessaire pour 'R\u00E9ussi'" et cell-ci doit \u00EAtre d'abord d\u00E9finie.
-tools.import.table=$org.olat.ims.qti.editor\:tools.import.table
-form.imd.alignment.right=Droite
-warning.conversion.standard=Il existe un risque que des donn\u00E9es soient perdues bien qu'aucune incompatibilit\u00E9 n'ait \u00E9t\u00E9 d\u00E9tect\u00E9e.
-delete.section=$org.olat.ims.qti.editor\:delete.section
-add.hint.feedback=Ajouter un indice de solution
-form.imd.responsive.hint=L'image de fond s'adaptera \u00E0 la taille de l'\u00E9cran. Attention\: si l'image deviendra plus petites, les hotspots seront \u00E9galement plus petits\!
-max.choices.unlimited=Quelconque
-form.imd.hint.title=Titre
-form.imd.answer=R\u00E9ponse
-form.hottext=Hottext
-form.testPart.navigationMode.nonlinear=Non lin\u00E9aire
-hotspot.layout=Couleur des hotpsots
-fib.expectedLength=Taille du trou
-form.imd.correct.text=Feedback lors du choix de toutes les r\u00E9ponses correctes
-form.imd.shuffle=Ordre des r\u00E9ponses al\u00E9atoires
-form.testPart.navigationMode=Navigation
-warning.conversion.list=Des incompatibilit\u00E9s avec l'\u00E9diteur ont \u00E9t\u00E9 d\u00E9tect\u00E9es\:
-new.numerical=$\:new.fib.numerical
-new.sc=Choix simple
-form.imd.background.resize=Optimiser la taille de l'image pour le web
-new.essay=Texte libre
-form.unkown=Inconnu
-feedback.additional.help=Retour d'information conditionnel.
-math.operator.smallerEquals=<\=
-form.pool=Banque de questions
-variable.response=R\u00E9ponse
-feedback.hint.help=Conseil\: un bouton appara\u00EEt pour montr\u00E9 le conseil tant que la r\u00E9ponse n'a pas \u00E9t\u00E9 soumise.
-form.imd.layout.top=En haut
-form.kprim=Kprim
-error.assessment.test=Le fichier n'a pas pu \u00EAtre lu. Il semble soit corrompu soit au mauvais format.
-item.session.control.show.solution=Afficher la solution
-tools.export.header=$org.olat.ims.qti.editor\:tools.export.header
-table.header.learning.time=Dur\u00E9e
+#Mon Aug 26 19:51:39 CEST 2019
+Diff\u00E9rentes=alternatives
+MULTIPLE=Choix multiple
+SINGLE=Choix simple
+add=Ajouter
 add.additional.feedback=Ajouter un retour d'information conditionnel
-form.section.selection_pre.hover=Indiquez si la totalit\u00E9 ou au contraire un certain nombre seulement de questions seront affich\u00E9s dans le test.
-warning.atleastonesection=La section ne peut pas \u00EAtre supprim\u00E9e. Un test ou un "test part" doit contenir au moins une section.
-form.score.answer.points=Points
-form.imd.descr=Question
-editor.sc.title=Choix simple
-error.missing.section=Vous devez avoir au moins une section dans un test ou une partie de test.
-new.matchtruefalse=True/false
-form.section.visible=Titre des sections visibles dans l'\u00E9valuation
-form.imd.condition=Condition(s)
 add.answered.feedback=Ajouter un retour d'information si r\u00E9ponse
-new.drawing=Dessin
-new.circle=Cercle
-form.imd.layout.left=Gauche
-hotspot.layout.green=Vert
-form.imd.limittries=$org.olat.ims.qti.editor\:form.imd.limittries
-form.imd.additional.title=Titre
-new.section=Section
+add.correct.feedback=Ajouter un retour d'informations si toutes les r\u00E9ponses correctes
+add.correct.feedback.single=Ajouter un retour d'information si la r\u00E9ponse correcte
+add.correctSolution.feedback=Ajouter solution correcte
+add.empty.feedback=Ajouter un retour d'information si r\u00E9ponse manquante
 add.feedback.menu=Ajouter un retour d'information
-form.hotspot=Hotspot
-match.true=Correct
-form.imd.correctSolution.title=Titre
-warning.alien.assessment.test=Ce test ne peut pas \u00EAtre \u00E9diter par l'\u00E9diteur int\u00E9gr\u00E9 d'OpenOlat.
-table.header.comment=Autoriser commentaires
-feedback.answered.help=Retour d'information si r\u00E9ponse\: ce retour d'information appara\u00EEt d\u00E8s que l'utilisateur a donn\u00E9 une r\u00E9ponse, correcte ou non.
+add.hint.feedback=Ajouter un indice de solution
+add.incorrect.feedback=Ajouter un retour d'information si r\u00E9ponse fausse
 add.match.column=Ajouter une colonne
-table.header.attempts=Tentatives
-form.choice=Choix
-table.header.title=Titre
-form.score.assessment.all.correct=Tous les r\u00E9ponses correctes
-math.operator.biggerEquals=>\=
-add.correct.feedback=Ajouter un retour d'informations si toutes les r\u00E9ponses correctes
-form.imd.layout.right=Droite
-form.section.selection_all=$org.olat.ims.qti.editor\:form.section.selection_all
+add.match.row=Ajouter une ligne
+answers=R\u00E9ponses
+change.elements=Edition
+configuration.option.inherited=H\u00E9rit\u00E9
+configuration.option.inherited.val=H\u00E9rit\u00E9 ({0})
+configuration.option.no=Non
 configuration.option.yes=Oui
-general.master.identifier=$org.olat.modules.qpool.ui\:general.master.identifier
-export.qpool.successful=$org.olat.ims.qti.editor\:export.qpool.successful
 configuration.overview=Aper\u00E7u de la configuration du test
-item.session.control.show.solution.hint=Lors de la revue, les solutions sont \u00E9galement pr\u00E9sent\u00E9es.
-add.correctSolution.feedback=Ajouter solution correcte
-form.imd.layout.bottom=En bas
-general.identifier=$org.olat.modules.qpool.ui\:general.identifier
-add=Ajouter
-form.imd.layout.match.targets.short=Cat\u00E9gories
-form.imd.background=Image de fond
-table.header.identifier=ID question
-new.testpart=Partie de test
-form.imd.correct.single.text=Retour d'information pour r\u00E9ponse correcte
-title.add=$org.olat.ims.qti.editor\:title.add
-form.testPart.navigationMode.hint=Lin\u00E9aire\: les questions doivent \u00EAtre r\u00E9solues dans l'ordre. Non lin\u00E9aire\: l'utilisateur peut choisir l'ordre dans lequel il r\u00E9pond aux questions.
-table.header.review=Autoriser \u00E0 revoir
-new.answer=Nouvelle r\u00E9ponse
-new.spots=Ajouter un emplacement
-form.drawing=Dessin
+convert=Convertir
+convert.alien=Convertir
+convert.to=Transformer en\:
+copy.at=Copi\u00E9 le
+copy.qpool.question=Faire une copie et l'\u00E9diter
+correct.answers=Correct
+cut.value=Nombre de points n\u00E9cessaire pour "r\u00E9ussi"
+delete=Effacer
+delete.item=$org.olat.ims.qti.editor\:delete.item
+delete.section=$org.olat.ims.qti.editor\:delete.section
+delete.testPart=Voulez-vous vraiment effacer cette partie du test et toutes les questions qu'elle contient?
+duration.h=h
+duration.m=m
+duration.s=s
+editor.sc.title=Choix simple
+editor.unkown.title=Interaction inconnue
 error.assessment.item=$\:error.assessment.test
-form.imd.wrong.kprim=Faux
-add.empty.feedback=Ajouter un retour d'information si r\u00E9ponse manquante
+error.assessment.test=Le fichier n'a pas pu \u00EAtre lu. Il semble soit corrompu soit au mauvais format.
+error.cannot.create.section=Vous ne pouvez pas cr\u00E9er une section ici.
+error.cannot.delete=Vous ne pouvez pas effacer cet \u00E9l\u00E9ment.
+error.cannot.remove.feedback=Le retour d'information ne pas \u00EAtre effac\u00E9 si le test est d\u00E9j\u00E0 utilis\u00E9
 error.cardinality.answer=Choix simple n'autorise qu'une seule r\u00E9ponse correcte.
-tools.export.docx=$org.olat.ims.qti.editor\:tools.export.docx
-form.score.answer.summary=Aper\u00E7u de la r\u00E9ponse
-convert.alien=Convertir
-form.imd.alignment=Alignement des cases \u00E0 cocher
-preview=Aper\u00E7u
-warning.templates=Cette question contient des "Templates", une fonction que l'\u00E9diteur ne supporte pas.
-tools.reload.from.files=Recharger les fichiers et rafra\u00EEchir le cache
-fib.tolerance.mode.relative=Relatif
+error.double=$org.olat.ims.qti21.ui\:error.double
+error.import.question=Une erreur inattendue s'est produite pendant l'importation de la question.
+error.integer=$org.olat.ims.qti21.ui\:error.integer
+error.lock=Ce test / questionnaire est \u00E9dit\u00E9 par {0} en ce moment et est bloqu\u00E9.
+error.lock.title=Test bloqu\u00E9
 error.lower.tolerance=La limite inf\u00E9rieure doit \u00EAtre plus petite ou \u00E9gale \u00E0 la solution.
-math.operator.bigger=>
-form.imd.title=Titre
-form.test.incorrect.text=Feedback lors du choix d'une r\u00E9ponse incorrecte
+error.mimetype=$org.olat.core.commons.modules.bc\:WrongMimeType
+error.min.score.bigger.max=Le nombre de points minimum doit \u00EAtre plus petit que le nombre de points maximum.
+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.
-new.hottext.start=C'est un hot
-rights.owners=$org.olat.modules.qpool.ui\:rights.owners
-form.score=Score
-item.session.control.allow.review.hint=Apr\u00E8s avoir termin\u00E9 le test, il est possible de parcourir et revoir le test.
-form.imd.feedback.title=Titre
-new.hottext.text=texte
-tools.export.qpool=$org.olat.ims.qti.editor\:tools.export.qpool
-form.imd.responsive=Convient pour mobile
-correct.answers=Correct
-match.unanswered=Sans r\u00E9ponse
-warning.item.session.control.attempts=Cette limitation a un impact sur le nombre d'essai par questions.<br/>V\u00E9rifiez les param\u00E8tres de vos questions.
-fib.tolerance.mode.relative.help=Le solution est accept\u00E9 entre la limite inf\u00E9rieure et sup\u00E9rieure. La limite peut \u00EAtre un nombre relatif exprim\u00E9 en pour cent, exemple, la solution est 20, limite inf\u00E9rieure 10, limite sup\u00E9rieure 10 &rarr; toutes les r\u00E9ponses entre 18 et 22 sont correctes. La limite inf\u00E9rieure signifie moins 10% (20-2) and la limite sup\u00E9rieur plus 10% (20+2).
-max.choices=Nombre max. de r\u00E9ponses
-table.header.skipping=Autoriser \u00E0 sauter
-time.limit.max=Limite de temps (minute)
-form.section.shuffle=Ordre al\u00E9atoire des questions?
-feedback.empty.help=Retour d'information si r\u00E9ponse manquante\: ce retour d'information appear tant que la r\u00E9ponse est vide.
-warning.alien.assessment.item=Cette question ne peut pas \u00EAtre \u00E9dit\u00E9e par l'\u00E9diteur int\u00E9gr\u00E9 d'OpenOlat.
-form.test.incorrect.title=Titre
-tools.reload.from.files.tooltip=Visible aux seuls administrateurs
-form.imd.answered.title=Titre
+error.missing.section=Vous devez avoir au moins une section dans un test ou une partie de test.
+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
-feedback.incorrect.help=Retour d'information si les r\u00E9ponses incorrects\: le feedback appara\u00EEt d\u00E8s qu'une r\u00E9ponse est fausse. Par exemple dans un text \u00E0 trous qui consiste en cinquante trous et qu'une seule r\u00E9ponse est fausse.
-feedback.correct.help=Retour d'informations si toutes les r\u00E9ponses sont correctes\: le retour d'informations n'appara\u00EEt que si toute les r\u00E9ponses sont correctes.
-inherit=H\u00E9rit\u00E9
+error.upper.tolerance=La limite sup\u00E9rieure doit \u00EAtre plus grande ou \u00E9gale \u00E0 la solution.
+essay.expectedLength=Nombre de lettres
+essay.max.strings=Nombre de mots max.
+essay.min.strings=Nombre de mots min.
 essay.rows=Hauteur (nombre de lignes)
-tools.import.qpool=$org.olat.ims.qti.editor\:tools.import.qpool
-form.imd.correctSolution.text=Solution correcte
-form.imd.incorrect.title=Titre
-math.operator.notEquals=\!\=
-hour.short=h
-variable.score=Points
-new.match=Match
-answers=R\u00E9ponses
-minute.short=m
-convert=Convertir
-form.imd.match.multiple.choice=Multiple choice
-item.session.control.allow.comment=Autoriser les commentaires
-form.metadata.creationDate=Cr\u00E9\u00E9 le
-item.session.control.allow.skipping.hint=Un test peut \u00EAtre termin\u00E9 avant d'avoir r\u00E9pondu \u00E0 toutes les questions.
-new.kprim=Kprim
-cut.value=Nombre de points n\u00E9cessaire pour "r\u00E9ussi"
-new.rectangle=Rectangle
-delete.item=$org.olat.ims.qti.editor\:delete.item
+export.qpool.successful=$org.olat.ims.qti.editor\:export.qpool.successful
+feedback.additional.help=Retour d'information conditionnel.
+feedback.answered.help=Retour d'information si r\u00E9ponse\: ce retour d'information appara\u00EEt d\u00E8s que l'utilisateur a donn\u00E9 une r\u00E9ponse, correcte ou non.
+feedback.correct.help=Retour d'informations si toutes les r\u00E9ponses sont correctes\: le retour d'informations n'appara\u00EEt que si toute les r\u00E9ponses sont correctes.
+feedback.correct.single.help=Retour d'information si r\u00E9ponse correcte\: ce retour d'information appara\u00EEt seulement si la r\u00E9ponse donn\u00E9e est correcte.
+feedback.correctSolution.help=Solution correcte\: la solution est montr\u00E9e automatiquement si la r\u00E9ponse est fausse.
+feedback.empty.help=Retour d'information si r\u00E9ponse manquante\: ce retour d'information appear tant que la r\u00E9ponse est vide.
+feedback.hint.help=Conseil\: un bouton appara\u00EEt pour montr\u00E9 le conseil tant que la r\u00E9ponse n'a pas \u00E9t\u00E9 soumise.
+feedback.incorrect.help=Retour d'information si les r\u00E9ponses incorrects\: le feedback appara\u00EEt d\u00E8s qu'une r\u00E9ponse est fausse. Par exemple dans un text \u00E0 trous qui consiste en cinquante trous et qu'une seule r\u00E9ponse est fausse.
+fib.alternative=Alternatives
+fib.alternative.help=Avec le + peuvent \u00EAtre ajout\u00E9es diff\u00E9rentes alternatives.<br>Les mots s\u00E9par\u00E9es par des points-virgules seront chacun sauv\u00E9s comme une solution.
+fib.caseSensitive=Sensible aux majuscules / minuscules
+fib.expectedLength=Taille du trou
 fib.placeholder=Example g\u00E9n\u00E9rique
-hotspot.layout.inverted=Invers\u00E9
-form.imd.mimetype=Type de fichier
-form.score.answer.correct=Correct
-error.import.question=Une erreur inattendue s'est produite pendant l'importation de la question.
-warning.copy.from.pool=La question a \u00E9t\u00E9 copi\u00E9e depuis la banque de questions. Vous pouvez retrouver l'originale avec l'ID master.
-form.testPart.navigationMode.linear=Lin\u00E9aire
-form.imd.layout.match.targets=Cat\u00E9gories
-form.imd.match.single.multiple=Type
-tools.change.copy=$org.olat.ims.qti.editor\:tools.change.copy
+fib.solution=Solution
+fib.tolerance.low=Limite inf\u00E9rieure
+fib.tolerance.mode=Type de tol\u00E9rance
 fib.tolerance.mode.absolute=Absolu
-form.imd.empty.text=Feedback si aucune r\u00E9ponse donn\u00E9e
-add.match.row=Ajouter une ligne
-error.positive.double=Seul des nombres positives sont permis. Par exemple\: 15.0, 5.5, 10
-preview.solution=Aper\u00E7u de la solution
-warning.in.use=La ressource est d\u00E9j\u00E0 utilis\u00E9e pour au moins une \u00E9valuation. L'\u00E9dition en est limit\u00E9e.
 fib.tolerance.mode.absolute.example=Un nombre, par exemple 1.5 ou 1322
-form.imd.feedback.text=Retour d'information
-item.session.control.allow.comment.hint=Un participant au test peut prendre des notes personnelles. La fonction doit \u00EAtre activ\u00E9e sous "Options".
-error.min.score.bigger.max=Le nombre de points minimum doit \u00EAtre plus petit que le nombre de points maximum.
-copy.qpool.question=Faire une copie et l'\u00E9diter
-item.session.control.allow.skipping=Autoriser \u00E0 sauter les questions
-form.test.correct.text=Feedback lors du choix de tous les r\u00E9ponses correctes
-form.essay=Texte libre
+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 18, la limite sup\u00E9rieure 22 &arr; toutes les solutions entre 18 et 22 sont correctes.
+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.mode.relative.help=Le solution est accept\u00E9 entre la limite inf\u00E9rieure et sup\u00E9rieure. La limite peut \u00EAtre un nombre relatif exprim\u00E9 en pour cent, exemple, la solution est 20, limite inf\u00E9rieure 10, limite sup\u00E9rieure 10 &rarr; toutes les r\u00E9ponses entre 18 et 22 sont correctes. La limite inf\u00E9rieure signifie moins 10% (20-2) and la limite sup\u00E9rieur plus 10% (20+2).
+fib.tolerance.up=Limite sup\u00E9rieur
 file=Fichier
+form.choice=Choix
+form.drawing=Dessin
+form.essay=Texte libre
 form.feedback=Feedback
-form.imd.answered.text=Retour d'information par question
-new.fib=Texte \u00E0 trou
-warning.unsupported.feedbacks=Cette question contient des retours d'information que cet \u00E9diteur ne supporte pas. Ils seront perdus apr\u00E8s la conversion.
-convert.to=Transformer en\:
-error.upper.tolerance=La limite sup\u00E9rieure doit \u00EAtre plus grande ou \u00E9gale \u00E0 la solution.
-fib.solution=Solution
-error.cannot.remove.feedback=Le retour d'information ne pas \u00EAtre effac\u00E9 si le test est d\u00E9j\u00E0 utilis\u00E9
-essay.expectedLength=Nombre de lettres
-error.lock.title=Test bloqu\u00E9
-configuration.option.inherited.val=H\u00E9rit\u00E9 ({0})
-error.need.correct.answer=Vous devez s\u00E9lectionner au moins une r\u00E9ponse comme correcte.
-form.imd.hint.text=Indice de solution
-warning.alien.feedbacks=Cette question contient des retours d'informations que cet \u00E9diteur ne supporte pas. Ils seront perdus apr\u00E8s la conversion.
-table.header.points=Points
-add.incorrect.feedback=Ajouter un retour d'information si r\u00E9ponse fausse
-fib.alternative.help=Avec le + peuvent \u00EAtre ajout\u00E9es diff\u00E9rentes alternatives.<br>Les mots s\u00E9par\u00E9es par des points-virgules seront chacun sauv\u00E9s comme une solution.
-error.integer=$org.olat.ims.qti21.ui\:error.integer
-min.choices.unlimited=Illimit\u00E9
-add.correct.feedback.single=Ajouter un retour d'information si la r\u00E9ponse correcte
-error.cannot.create.section=Vous ne pouvez pas cr\u00E9er une section ici.
-error.cannot.delete=Vous ne pouvez pas effacer cet \u00E9l\u00E9ment.
-min.choices=Nombre min. de r\u00E9ponse(s)
-error.lock=Ce test / questionnaire est \u00E9dit\u00E9 par {0} en ce moment et est bloqu\u00E9.
-SINGLE=Choix simple
-fib.alternative=Alternatives
-configuration.option.no=Non
+form.fib=Texte \u00E0 trous
+form.hotspot=Hotspot
+form.hottext=Hottext
 form.imd.additional.text=Retour d'information {0}
-variable.attempts=Tentatives de r\u00E9ponse
-form.section.selection_pre=Nombre de questions dans la section
-form.score.assessment.mode=M\u00E9thode d'\u00E9valuation
-MULTIPLE=Choix multiple
-new.hotspot=Hotspot
-new.upload=T\u00E9l\u00E9verser un fichier
-essay.max.strings=Nombre de mots max.
-tools.change.delete=$org.olat.ims.qti.editor\:tools.change.delete
-delete.testPart=Voulez-vous vraiment effacer cette partie du test et toutes les questions qu'elle contient?
-table.header.type=Type
-copy.at=Copi\u00E9 le
-min.score=Nombre de points minimum
-item.session.control.allow.review=Autoriser la revue des questions
-error.double=$org.olat.ims.qti21.ui\:error.double
-form.score.assessment.per.answer=Points par r\u00E9ponse
+form.imd.additional.title=Titre
+form.imd.alignment=Alignement des cases \u00E0 cocher
+form.imd.alignment.left=Gauche
+form.imd.alignment.right=Droite
+form.imd.answer=R\u00E9ponse
+form.imd.answered.text=Retour d'information par question
+form.imd.answered.title=Titre
+form.imd.background=Image de fond
+form.imd.background.resize=Optimiser la taille de l'image pour le web
 form.imd.background.resize.no=Laisser inchang\u00E9
-form.imd.match.single.choice=Single choice
-form.imd.layout=$org.olat.ims.qti.editor\:form.imd.layout
-form.metadata.initialAuthor=Cr\u00E9\u00E9 par
-new.hottext=Hottext
-warning.text.after.interaction=Cette question contient un bloc de texte apr\u00E8s l'\u00E9l\u00E9ment interactif. Ce n'est pas support\u00E9 par l'\u00E9diteur et cette partie du texte sera perdue.
+form.imd.cardinality=Type
+form.imd.condition=Condition(s)
+form.imd.correct.kprim=Vrai
+form.imd.correct.single.text=Retour d'information pour r\u00E9ponse correcte
 form.imd.correct.spots=Emplacement correct
-match.false=Faux
-error.mimetype=$org.olat.core.commons.modules.bc\:WrongMimeType
-fib.tolerance.up=Limite sup\u00E9rieur
+form.imd.correct.text=Feedback lors du choix de toutes les r\u00E9ponses correctes
+form.imd.correct.title=Titre
+form.imd.correctSolution.text=Solution correcte
+form.imd.correctSolution.text.word=$\:form.imd.correctSolution.text (seulement pour export Word)
+form.imd.correctSolution.title=Titre
+form.imd.descr=Question
+form.imd.empty.text=Feedback si aucune r\u00E9ponse donn\u00E9e
+form.imd.empty.title=Titre
+form.imd.feedback.text=Retour d'information
+form.imd.feedback.title=Titre
+form.imd.hint.text=Indice de solution
+form.imd.hint.title=Titre
+form.imd.incorrect.text=Feedback lors de r\u00E9ponses incorrectes
+form.imd.incorrect.title=Titre
+form.imd.layout=$org.olat.ims.qti.editor\:form.imd.layout
+form.imd.layout.bottom=En bas
+form.imd.layout.horizontal=$org.olat.ims.qti.editor\:form.imd.layout.horizontal
+form.imd.layout.left=Gauche
 form.imd.layout.match.sources=Objet
-new.fib.numerical=Entr\u00E9e num\u00E9rique
-math.operator.equals=\=
-table.header.license=Licence
-fib.caseSensitive=Sensible aux majuscules / minuscules
-fib.tolerance.mode.exact=Exact
-lifecycle.version=$org.olat.modules.qpool.ui\:lifecycle.version
+form.imd.layout.match.targets=Cat\u00E9gories
+form.imd.layout.match.targets.short=Cat\u00E9gories
+form.imd.layout.right=Droite
+form.imd.layout.top=En haut
 form.imd.layout.vertical=$org.olat.ims.qti.editor\:form.imd.layout.vertical
-form.imd.correct.kprim=Vrai
-Diff\u00E9rentes=alternatives
-hotspot.layout.shadow=Activ\u00E9 l'ombrage
-table.header.feedback=Feedback
-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 18, la limite sup\u00E9rieure 22 &arr; toutes les solutions entre 18 et 22 sont correctes.
-item.session.control.attempts.hint=Cette limitation du nombre d'essai est seulement valide pour les parties de test et non pour le test entier. Le nombre d'essai pour le test entier peut \u00EAtre limit\u00E9 dans "Options".
-fib.tolerance.mode=Type de tol\u00E9rance
-fib.tolerance.low=Limite inf\u00E9rieure
-item.session.control.attempts=Tentatives
-essay.min.strings=Nombre de mots min.
+form.imd.limittries=$org.olat.ims.qti.editor\:form.imd.limittries
+form.imd.match.multiple.choice=Multiple choice
+form.imd.match.single.choice=Single choice
+form.imd.match.single.multiple=Type
+form.imd.mimetype=Type de fichier
+form.imd.responsive=Convient pour mobile
+form.imd.responsive.hint=L'image de fond s'adaptera \u00E0 la taille de l'\u00E9cran. Attention\: si l'image deviendra plus petites, les hotspots seront \u00E9galement plus petits\!
+form.imd.rubric=Description
+form.imd.shuffle=Ordre des r\u00E9ponses al\u00E9atoires
+form.imd.title=Titre
+form.imd.wrong.kprim=Faux
+form.kprim=Kprim
+form.match=Match
 form.metadata=M\u00E9tadonn\u00E9es
-change.elements=Edition
-delete=Effacer
-form.imd.alignment.left=Gauche
+form.metadata.creationDate=Cr\u00E9\u00E9 le
 form.metadata.description=Description
+form.metadata.initialAuthor=Cr\u00E9\u00E9 par
 form.metadata.title=Titre
-form.imd.correctSolution.text.word=$\:form.imd.correctSolution.text (seulement pour export Word)
-form.imd.layout.horizontal=$org.olat.ims.qti.editor\:form.imd.layout.horizontal
-feedback.correct.single.help=Retour d'information si r\u00E9ponse correcte\: ce retour d'information appara\u00EEt seulement si la r\u00E9ponse donn\u00E9e est correcte.
-form.upload=T\u00E9l\u00E9verser un fichier
-warning.custom.operator=Une extension non-standard a \u00E9t\u00E9 trouv\u00E9e que cette \u00E9diteur ne la supporte pas.
-warning.atleastone=Choisir au moins un \u00E9l\u00E9ment s'il vous pla\u00EEt.
-new.matchdraganddrop=Drag and Drop
-fib.tolerance.mode.exact.help=La solution doit \u00EAtre exactement celle entr\u00E9e sous "Solution".
-form.imd.empty.title=Titre
-fib.tolerance.mode.relative.example=Pourcentage, par example 15 ou 99.0
-new.mc=Choix multiples
-feedback.correctSolution.help=Solution correcte\: la solution est montr\u00E9e automatiquement si la r\u00E9ponse est fausse.
-configuration.option.inherited=H\u00E9rit\u00E9
+form.pool=Banque de questions
+form.score=Score
+form.score.answer.correct=Correct
+form.score.answer.points=Points
+form.score.answer.summary=Aper\u00E7u de la r\u00E9ponse
+form.score.assessment.all.correct=Tous les r\u00E9ponses correctes
+form.score.assessment.mode=M\u00E9thode d'\u00E9valuation
+form.score.assessment.per.answer=Points par r\u00E9ponse
+form.section.selection_all=$org.olat.ims.qti.editor\:form.section.selection_all
+form.section.selection_pre=Nombre de questions dans la section
+form.section.selection_pre.hover=Indiquez si la totalit\u00E9 ou au contraire un certain nombre seulement de questions seront affich\u00E9s dans le test.
+form.section.shuffle=Ordre al\u00E9atoire des questions?
+form.section.visible=Titre des sections visibles dans l'\u00E9valuation
+form.test.correct.text=Feedback lors du choix de tous les r\u00E9ponses correctes
 form.test.correct.title=Titre
+form.test.incorrect.text=Feedback lors du choix d'une r\u00E9ponse incorrecte
+form.test.incorrect.title=Titre
+form.testPart.navigationMode=Navigation
+form.testPart.navigationMode.hint=Lin\u00E9aire\: les questions doivent \u00EAtre r\u00E9solues dans l'ordre. Non lin\u00E9aire\: l'utilisateur peut choisir l'ordre dans lequel il r\u00E9pond aux questions.
+form.testPart.navigationMode.linear=Lin\u00E9aire
+form.testPart.navigationMode.nonlinear=Non lin\u00E9aire
+form.unkown=Inconnu
+form.upload=T\u00E9l\u00E9verser un fichier
+general.identifier=$org.olat.modules.qpool.ui\:general.identifier
+general.master.identifier=$org.olat.modules.qpool.ui\:general.master.identifier
+hotspot.layout=Couleur des hotpsots
+hotspot.layout.green=Vert
+hotspot.layout.inverted=Invers\u00E9
+hotspot.layout.light=Clair
+hotspot.layout.purple=Violet
+hotspot.layout.shadow=Activ\u00E9 l'ombrage
 hotspot.layout.standard=Bleu standard
+hour.short=h
+inherit=H\u00E9rit\u00E9
+item.session.control.allow.comment=Autoriser les commentaires
+item.session.control.allow.comment.hint=Un participant au test peut prendre des notes personnelles. La fonction doit \u00EAtre activ\u00E9e sous "Options".
+item.session.control.allow.review=Autoriser la revue des questions
+item.session.control.allow.review.hint=Apr\u00E8s avoir termin\u00E9 le test, il est possible de parcourir et revoir le test.
+item.session.control.allow.skipping=Autoriser \u00E0 sauter les questions
+item.session.control.allow.skipping.hint=Un test peut \u00EAtre termin\u00E9 avant d'avoir r\u00E9pondu \u00E0 toutes les questions.
+item.session.control.attempts=Tentatives
+item.session.control.attempts.hint=Cette limitation du nombre d'essai est seulement valide pour les parties de test et non pour le test entier. Le nombre d'essai pour le test entier peut \u00EAtre limit\u00E9 dans "Options".
+item.session.control.show.solution=Afficher la solution
+item.session.control.show.solution.hint=Lors de la revue, les solutions sont \u00E9galement pr\u00E9sent\u00E9es.
+lifecycle.version=$org.olat.modules.qpool.ui\:lifecycle.version
+match.false=Faux
+match.true=Correct
+match.unanswered=Sans r\u00E9ponse
+math.operator.bigger=>
+math.operator.biggerEquals=>\=
+math.operator.equals=\=
+math.operator.notEquals=\!\=
 math.operator.smaller=<
-duration.h=h
+math.operator.smallerEquals=<\=
+max.choices=Nombre max. de r\u00E9ponses
+max.choices.unlimited=Quelconque
 max.score=Nombre de points maximum
-form.imd.rubric=Description
-table.header.solution=Montrer solutions
-hotspot.layout.light=Clair
-form.imd.cardinality=Type
-form.match=Match
-editor.unkown.title=Interaction inconnue
-duration.m=m
-error.missing.fib=La question doit contenir au moins un text \u00E0 trou ou une entr\u00E9e num\u00E9rique.
+min.choices=Nombre min. de r\u00E9ponse(s)
+min.choices.unlimited=Illimit\u00E9
+min.score=Nombre de points minimum
+minute.short=m
+new.answer=Nouvelle r\u00E9ponse
+new.circle=Cercle
+new.drawing=Dessin
 new.elements=Ajouter des \u00E9l\u00E9ments
-form.imd.incorrect.text=Feedback lors de r\u00E9ponses incorrectes
-hotspot.layout.purple=Violet
-duration.s=s
-form.fib=Texte \u00E0 trous
+new.essay=Texte libre
+new.fib=Texte \u00E0 trou
+new.fib.numerical=Entr\u00E9e num\u00E9rique
+new.hotspot=Hotspot
+new.hottext=Hottext
+new.hottext.start=C'est un hot
+new.hottext.text=texte
+new.kprim=Kprim
+new.match=Match
+new.matchdraganddrop=Drag and Drop
+new.matchtruefalse=True/false
+new.mc=Choix multiples
+new.numerical=$\:new.fib.numerical
+new.rectangle=Rectangle
+new.sc=Choix simple
+new.section=Section
+new.spots=Ajouter un emplacement
+new.testpart=Partie de test
+new.upload=T\u00E9l\u00E9verser un fichier
+preview=Aper\u00E7u
+preview.solution=Aper\u00E7u de la solution
+rights.owners=$org.olat.modules.qpool.ui\:rights.owners
+table.header.attempts=Tentatives
+table.header.comment=Autoriser commentaires
+table.header.feedback=Feedback
+table.header.identifier=ID question
+table.header.learning.time=Dur\u00E9e
+table.header.license=Licence
+table.header.points=Points
+table.header.review=Autoriser \u00E0 revoir
+table.header.skipping=Autoriser \u00E0 sauter
+table.header.solution=Montrer solutions
+table.header.title=Titre
+table.header.type=Type
+time.limit.max=Limite de temps (minute)
+title.add=$org.olat.ims.qti.editor\:title.add
+tools.change.copy=$org.olat.ims.qti.editor\:tools.change.copy
+tools.change.delete=$org.olat.ims.qti.editor\:tools.change.delete
+tools.export.docx=$org.olat.ims.qti.editor\:tools.export.docx
+tools.export.header=$org.olat.ims.qti.editor\:tools.export.header
+tools.export.qpool=$org.olat.ims.qti.editor\:tools.export.qpool
+tools.import.qpool=$org.olat.ims.qti.editor\:tools.import.qpool
+tools.import.table=$org.olat.ims.qti.editor\:tools.import.table
+tools.reload.from.files=Recharger les fichiers et rafra\u00EEchir le cache
+tools.reload.from.files.tooltip=Visible aux seuls administrateurs
+variable.attempts=Tentatives de r\u00E9ponse
+variable.response=R\u00E9ponse
+variable.score=Points
+warning.alien.assessment.item=Cette question ne peut pas \u00EAtre \u00E9dit\u00E9e par l'\u00E9diteur int\u00E9gr\u00E9 d'OpenOlat.
+warning.alien.assessment.test=Ce test ne peut pas \u00EAtre \u00E9diter par l'\u00E9diteur int\u00E9gr\u00E9 d'OpenOlat.
+warning.alien.feedbacks=Cette question contient des retours d'informations que cet \u00E9diteur ne supporte pas. Ils seront perdus apr\u00E8s la conversion.
+warning.atleastone=Choisir au moins un \u00E9l\u00E9ment s'il vous pla\u00EEt.
+warning.atleastonesection=La section ne peut pas \u00EAtre supprim\u00E9e. Un test ou un "test part" doit contenir au moins une section.
+warning.conversion.list=Des incompatibilit\u00E9s avec l'\u00E9diteur ont \u00E9t\u00E9 d\u00E9tect\u00E9es\:
+warning.conversion.standard=Il existe un risque que des donn\u00E9es soient perdues bien qu'aucune incompatibilit\u00E9 n'ait \u00E9t\u00E9 d\u00E9tect\u00E9e.
+warning.copy.from.pool=La question a \u00E9t\u00E9 copi\u00E9e depuis la banque de questions. Vous pouvez retrouver l'originale avec l'ID master.
+warning.correct.answer.score=La r\u00E9ponse correcte ne donne pas de point mais une incorrecte si.
+warning.correct.answers.score=Les r\u00E9ponses incorrectes ne donnent pas de points mais une incorrecte si.
+warning.custom.operator=Une extension non-standard a \u00E9t\u00E9 trouv\u00E9e que cette \u00E9diteur ne la supporte pas.
+warning.feedback.cutvalue=Le feedback est bas\u00E9 sur la valeur "Points n\u00E9cessaire pour 'R\u00E9ussi'" et cell-ci doit \u00EAtre d'abord d\u00E9finie.
+warning.in.use=La ressource est d\u00E9j\u00E0 utilis\u00E9e pour au moins une \u00E9valuation. L'\u00E9dition en est limit\u00E9e.
+warning.item.session.control.attempts=Cette limitation a un impact sur le nombre d'essai par questions.<br/>V\u00E9rifiez les param\u00E8tres de vos questions.
+warning.templates=Cette question contient des "Templates", une fonction que l'\u00E9diteur ne supporte pas.
+warning.text.after.interaction=Cette question contient un bloc de texte apr\u00E8s l'\u00E9l\u00E9ment interactif. Ce n'est pas support\u00E9 par l'\u00E9diteur et cette partie du texte sera perdue.
+warning.unsupported.feedbacks=Cette question contient des retours d'information que cet \u00E9diteur ne supporte pas. Ils seront perdus apr\u00E8s la conversion.
diff --git a/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/PaypalCheckoutModule.java b/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/PaypalCheckoutModule.java
index 2b78d5737a4bab27e2c7a73b06444f653b39a387..d472aaa430d4b927b325cf727f2568573c2a65f0 100644
--- a/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/PaypalCheckoutModule.java
+++ b/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/PaypalCheckoutModule.java
@@ -19,6 +19,9 @@
  */
 package org.olat.resource.accesscontrol.provider.paypalcheckout;
 
+import java.util.Arrays;
+import java.util.List;
+
 import org.olat.core.configuration.AbstractSpringModule;
 import org.olat.core.util.coordinate.CoordinatorManager;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -38,6 +41,31 @@ public class PaypalCheckoutModule extends AbstractSpringModule {
 	private static final String PAYPAL_CLIENT_SECRET = "paypal.checkout.v2.client.secret";
 	private static final String PAYPAL_CURRENCY = "paypal.checkout.v2.currency";
 	
+	private static final String[] currencies = new String[] {
+			"AUD",
+			"CAD",
+			"CZK",
+			"DKK",
+			"EUR",
+			"HKD",
+			"HUF",
+			"ILS",
+			"JPY",
+			"MXN",
+			"NOK",
+			"NZD",
+			"PHP",
+			"PLN",
+			"GBP",
+			"SGD",
+			"SEK",
+			"CHF",
+			"TWD",
+			"THB",
+			"TRY",
+			"USD"
+		};
+	
 	@Value("${paypal.checkout.v2.client.id}")
 	private String clientId;
 	@Value("${paypal.checkout.v2.client.secret}")
@@ -82,6 +110,10 @@ public class PaypalCheckoutModule extends AbstractSpringModule {
 		setSecretStringProperty(PAYPAL_CLIENT_SECRET, secret, true);
 	}
 	
+	public List<String> getPaypalCurrencies() {
+		return Arrays.asList(currencies);
+	}
+	
 	public String getPaypalCurrency() {
 		return paypalCurrency;
 	}
diff --git a/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/PaypalCheckoutAccessConfigurationController.java b/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/PaypalCheckoutAccessConfigurationController.java
index 7dbd051d293a63b5588380e1a6e91fa6e87c829d..0bfd75e1bd73f3d8607e42510ceae499bc91dc37 100644
--- a/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/PaypalCheckoutAccessConfigurationController.java
+++ b/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/PaypalCheckoutAccessConfigurationController.java
@@ -20,6 +20,7 @@
 package org.olat.resource.accesscontrol.provider.paypalcheckout.ui;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.form.flexible.FormItemContainer;
@@ -27,6 +28,7 @@ import org.olat.core.gui.components.form.flexible.elements.DateChooser;
 import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement;
 import org.olat.core.gui.components.form.flexible.elements.SingleSelection;
 import org.olat.core.gui.components.form.flexible.elements.TextElement;
+import org.olat.core.gui.components.util.KeyValues;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.util.StringHelper;
@@ -60,31 +62,6 @@ public class PaypalCheckoutAccessConfigurationController extends AbstractConfigu
 	private static final String[] vatKeys = new String[]{"on"};
 	private final String[] vatValues;
 	
-	private static final String[] currencies = new String[] {
-		"AUD",
-		"CAD",
-		"CZK",
-		"DKK",
-		"EUR",
-		"HKD",
-		"HUF",
-		"ILS",
-		"JPY",
-		"MXN",
-		"NOK",
-		"NZD",
-		"PHP",
-		"PLN",
-		"GBP",
-		"SGD",
-		"SEK",
-		"CHF",
-		"TWD",
-		"THB",
-		"TRY",
-		"USD"
-	};
-	
 	private OfferAccess link;
 	
 	@Autowired
@@ -123,12 +100,15 @@ public class PaypalCheckoutAccessConfigurationController extends AbstractConfigu
 			amount = PriceFormat.format(price.getAmount());
 		}
 		priceEl = uifactory.addTextElement("price", "price", 32, amount, formLayout);
-
-		currencyEl = uifactory.addDropdownSingleselect("currency", "currency", formLayout, currencies, currencies, null);
+		
+		KeyValues currencies = new KeyValues();
+		List<String> paypalCurrencies = paypalModule.getPaypalCurrencies();
+		paypalCurrencies.forEach(currency -> currencies.add(KeyValues.entry(currency, currency)));
+		currencyEl = uifactory.addDropdownSingleselect("currency", "currency", formLayout, currencies.keys(), currencies.values(), null);
 		
 		boolean selected = false;
 		if(price != null && price.getCurrencyCode() != null) {
-			for(String currency:currencies) {
+			for(String currency:paypalCurrencies) {
 				if(currency.equals(price.getCurrencyCode())) {
 					currencyEl.select(currency, true);
 					selected = true;
diff --git a/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/PaypalCheckoutAccountConfigurationController.java b/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/PaypalCheckoutAccountConfigurationController.java
index 1a1d36fcacf0c307d23406ca76e771154d8fcbbd..d76bd38bf434a8647641a3c98b784ad38b3b5065 100644
--- a/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/PaypalCheckoutAccountConfigurationController.java
+++ b/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/PaypalCheckoutAccountConfigurationController.java
@@ -19,13 +19,18 @@
  */
 package org.olat.resource.accesscontrol.provider.paypalcheckout.ui;
 
+import java.util.List;
+
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.form.flexible.FormItemContainer;
+import org.olat.core.gui.components.form.flexible.elements.SingleSelection;
 import org.olat.core.gui.components.form.flexible.elements.TextElement;
 import org.olat.core.gui.components.form.flexible.impl.FormBasicController;
 import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer;
+import org.olat.core.gui.components.util.KeyValues;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
+import org.olat.core.util.StringHelper;
 import org.olat.resource.accesscontrol.AccessControlModule;
 import org.olat.resource.accesscontrol.provider.paypalcheckout.PaypalCheckoutModule;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -41,6 +46,9 @@ public class PaypalCheckoutAccountConfigurationController extends FormBasicContr
 	
 	private TextElement clientIdEl;
 	private TextElement clientSecretEl;
+	private SingleSelection currencyEl;
+	
+	private final List<String> paypalCurrencies;
 
 	@Autowired
 	private AccessControlModule acModule;
@@ -49,7 +57,7 @@ public class PaypalCheckoutAccountConfigurationController extends FormBasicContr
 	
 	public PaypalCheckoutAccountConfigurationController(UserRequest ureq, WindowControl wControl) {
 		super(ureq, wControl);
-
+		paypalCurrencies = paypalModule.getPaypalCurrencies();
 		initForm(ureq);
 	}
 	
@@ -66,6 +74,15 @@ public class PaypalCheckoutAccountConfigurationController extends FormBasicContr
 			setFormDescription("checkout.config.description");
 			setFormContextHelp("PayPal Configuration");
 			
+			KeyValues currencies = new KeyValues();
+			paypalCurrencies.forEach(currency -> currencies.add(KeyValues.entry(currency, currency)));
+			currencyEl = uifactory.addDropdownSingleselect("currency", "currency", formLayout, currencies.keys(), currencies.values(), null);
+			if(StringHelper.containsNonWhitespace(paypalModule.getPaypalCurrency())) {
+				currencyEl.select(paypalModule.getPaypalCurrency(), true);
+			} else {
+				currencyEl.select("CHF", true);
+			}
+			
 			String clientId = paypalModule.getClientId();
 			clientIdEl = uifactory.addTextElement("checkout.client.id", 128, clientId, formLayout);
 			String clientSecret = paypalModule.getClientSecret();
@@ -85,6 +102,9 @@ public class PaypalCheckoutAccountConfigurationController extends FormBasicContr
 	protected void formOK(UserRequest ureq) {
 		paypalModule.setClientId(clientIdEl.getValue());
 		paypalModule.setClientSecret(clientSecretEl.getValue());
+		if(currencyEl.isOneSelected() && paypalCurrencies.contains(currencyEl.getSelectedKey())) {
+			paypalModule.setPaypalCurrency(currencyEl.getSelectedKey());
+		}
 		showInfo("saved");
 	}
 }
\ No newline at end of file
diff --git a/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/_i18n/LocalStrings_de.properties
index f3d4e9c4bad8392d6903c416dea605747c5bce47..eb7ce8b9eafe7e558c51ee807eb6bb805c68c2b1 100644
--- a/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/_i18n/LocalStrings_de.properties
@@ -4,7 +4,7 @@ access.paypal.desc=Diese Ressource kann mit einem PayPal Konto gekauft werden. H
 access.paypal.title=Bezahlen mit PayPal
 checkout.client.id=Client ID
 checkout.client.secret=Client secret
-checkout.config.description=Konfigurieren Sie die PayPal API-Berechtigung f\u00FCr den PayPal Zugang mit den Elementen Client ID und Client Secret. Diese zwei Sicherheitselemente m\u00FCssen Sie zuerst in Ihrem PayPal Businesskonto erstellen. OpenOlat unterst\u00FCtzt nicht nachtr\u00E4gliche Anderungen am Bestellungen von Ihrem Paypal Konto.
+checkout.config.description=Konfigurieren Sie die PayPal API-Berechtigung f\u00FCr den PayPal Zugang mit den Elementen Client ID und Client Secret. Diese zwei Sicherheitselemente m\u00FCssen Sie zuerst in Ihrem PayPal Businesskonto erstellen. <strong>OpenOlat unterst\u00FCtzt nicht nachtr\u00E4gliche Anderungen am Bestellungen von Ihrem Paypal Konto.</strong>
 checkout.config.title=Paypal Checkout konfigurieren
 config.disabled.warning=Warning
 currency=W\u00E4hrung
diff --git a/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/_i18n/LocalStrings_en.properties
index 1c836dbe2b7edc6c7ca290ebed9cf30690d45140..ac5533ca817497c2e614140749472485f84653e0 100644
--- a/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/_i18n/LocalStrings_en.properties
@@ -4,7 +4,7 @@ access.paypal.desc=PayPal description
 access.paypal.title=Pay with PayPal
 checkout.client.id=Client ID
 checkout.client.secret=Client secret
-checkout.config.description=Configure your authorisation to use your Paypal count with the Client ID and Client Secret. These two security elements must be created in your Paypal Business Account. OpenOlat doesn't support subsequent changes in order from your Paypal Account (yet).
+checkout.config.description=Configure your authorisation to use your Paypal count with the Client ID and Client Secret. These two security elements must be created in your Paypal Business Account. <strong>OpenOlat doesn't support subsequent changes in order from your Paypal Account (yet).</strong>
 checkout.config.title=Configure Paypal Checkout
 config.disabled.warning=config.disabled.warning
 currency=Currency
diff --git a/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/_i18n/LocalStrings_fr.properties
index bef71107ba56cffdb1080d07c6535b0d38820371..72fc4a731513d244df34da58bca21c93f4ac31ec 100644
--- a/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/resource/accesscontrol/provider/paypalcheckout/ui/_i18n/LocalStrings_fr.properties
@@ -1,2 +1,47 @@
-#Wed Jan 11 18:32:30 CET 2017
+#Mon Aug 26 20:05:20 CEST 2019
+access.button=Payer
+access.paypal.desc=Cet objet didactique peut \u00EAtre achet\u00E9 avec un compte Paypal. Cliquez sur le bouton "Payer" pour enregistrer votre acc\u00E8s.
+access.paypal.title=Payer avec Paypal
+checkout.client.id=Client ID
+checkout.client.secret=Client secret
+checkout.config.title=Configurer Paypal Checkout
+currency=Monnaie
+currency.error=Erreur, monnaie incorrecte
+delivery=Acheteur
+filter.canceled=Annul\u00E9
+filter.completed=Compl\u00E9t\u00E9 avec succ\u00E8s
+filter.created=Nouvelle commande Paypal
+filter.error=Erreur
+filter.new=Nouvelle commande (OpenOlat)
+offer.description=$org.olat.resource.accesscontrol.ui\:offer.description
+offer.price=Prix
+oo.order.nr=ID commande (OpenOlat)
+paypal.before.redirect.error=Erreur inattendue
+paypal.capture.id=Capture ID
+paypal.checkout.method=Paypal Checkout v2
 paypal.config.description=Configurez l'autorisation d'acc\u00E8s \u00E0 l'API PayPal\: Client ID et Client Secret. Ce sont les deux \u00E9l\u00E9ments de s\u00E9curit\u00E9 dont vous avez besoin pour cr\u00E9er votre compte PayPal Business.
+paypal.invoice.id=Facture ID
+paypal.menu.title=Paypal
+paypal.menu.title.alt=Configurer Paypal Checkout
+paypal.order.id=ID commande (Paypal)
+paypal.order.status=Statut
+paypal.order.status.reason=Raison du statut
+paypal.segment.account=Compte
+paypal.segment.transactions=Transactions
+paypal.transaction.amount=Prix (Paypal)
+paypal.transaction.title=Transaction Paypal "{0}"
+paypal.transactions.empty=Pas de transactions trouv\u00E9es
+price=Prix
+show.all=Tout afficher
+status.canceled=Annul\u00E9
+status.error=Erreur inattendue
+status.new=Nouveau (pas compl\u00E9t\u00E9)
+status.success=Compl\u00E9t\u00E9 avec succ\u00E8s
+status.unkown=Inconnu\: {0}
+table.header.order.date=Date
+table.header.order.id=ID commande Paypal
+table.header.order.nr=Id commande OpenOlat
+table.header.order.oo.status=Statut OpenOlat
+table.header.order.status=Statut
+vat.enabled=TVA
+vat.on=inclus