diff --git a/src/main/java/org/olat/modules/forms/ui/FileUploadController.java b/src/main/java/org/olat/modules/forms/ui/FileUploadController.java
index 65d2159cbdf5ee5df1b3b7d5d53e07afcd849274..b00c3dec8d71beefd2f4877f41c676c8efe2586c 100644
--- a/src/main/java/org/olat/modules/forms/ui/FileUploadController.java
+++ b/src/main/java/org/olat/modules/forms/ui/FileUploadController.java
@@ -86,7 +86,7 @@ public class FileUploadController extends FormBasicController implements Evaluat
 	@Override
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		String fileElId = "file_upload_" + CodeHelper.getRAMUniqueID();
-		flc.contextPut("fileUpload", fileElId);
+		flc.contextPut("item", fileElId);
 		fileEl = uifactory.addFileElement(getWindowControl(), fileElId, "", formLayout);
 		fileEl.setPreview(ureq.getUserSession(), true);
 		fileEl.setButtonsEnabled(false);
diff --git a/src/main/java/org/olat/modules/forms/ui/_content/file_upload.html b/src/main/java/org/olat/modules/forms/ui/_content/file_upload.html
index f002ed23e0a849f9a0e5bfab3b29537bf3832b31..de6cf34c6fc2905274842eab3d93e51f99d57b22 100644
--- a/src/main/java/org/olat/modules/forms/ui/_content/file_upload.html
+++ b/src/main/java/org/olat/modules/forms/ui/_content/file_upload.html
@@ -15,5 +15,21 @@
 		</div>
 	#end
 #else
-	$r.render("$fileUpload")
+	<div class="form-group $f.getElementCssClass($item) #if($f.hasError($item)) has-feedback has-error #end">
+		#if ($f.hasLabel($item))
+			$r.render("${item}_LABEL", "$f.getItemId($item)")
+		#end
+			$r.render(${item}, "form")
+			#if($f.hasError($item))
+				<span class="o_icon o_icon_error form-control-feedback"></span>
+			#end
+		#if($f.hasExample($item))
+			<div class="o_form_example help-block">
+				$r.render("${item}_EXAMPLE")
+			</div>
+		#end
+		#if($f.hasError($item))
+			$r.render("${item}_ERROR")
+		#end
+	</div>
 #end
\ No newline at end of file
diff --git a/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_de.properties
index 247910b23b6c0fbd3961d387d755a50525597335..ac26024a3e4dda8d52f73fbcff5dfb0e0fab7888 100644
--- a/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_de.properties
@@ -11,38 +11,38 @@ add.formrubric=Rubrik
 add.formsessioninformations=Informationen
 add.formsinglechoice=Einzelauswahl
 add.formtable=Tabelle
-add.slider=Frage hinzuf\u00fcgen
+add.slider=Frage hinzuf\u00FCgen
 bar.chart.legend=Legende
 chart.avg=Durchschnitt
 chart.count=Anzahl
-choice.add=Eintrag hinzuf\u00fcgen
-choice.delete=L\u00f6schen
+choice.add=Eintrag hinzuf\u00FCgen
+choice.delete=L\u00F6schen
 choice.example=Beispielwert
 choice.move=Verschieben
 choice.value=Eintrag
-choice.values=Eintr\u00e4ge
-confirm.done=M\u00f6chten Sie die Antworten abgeben? Diese k\u00f6nnen anschliessend nicht mehr bearbeitet werden.
-disclaimer.agreement=Beschriftung Einverst\u00e4ndniserkl\u00e4rung
-disclaimer.default.agreement=Ich habe die Einverst\u00e4ndniserkl\u00e4rung gelesen, verstanden und bin mit ihr einverstanden.
-disclaimer.default.text=Alle von den Umfrageteilnehmern \u00fcbermittelten personenbezogenen Daten werden gem\u00e4ss den Datenschutzvorschriften bearbeitet und in keinem Fall an Dritte weitergegeben.
-disclaimer.not.accepted=Bitte geben Sie zuerst Ihr Einverst\u00e4ndnis.
-disclaimer.text=Einverst\u00e4ndniserkl\u00e4rung
+choice.values=Eintr\u00E4ge
+confirm.done=M\u00F6chten Sie die Antworten abgeben? Diese k\u00F6nnen anschliessend nicht mehr bearbeitet werden.
+disclaimer.agreement=Beschriftung Einverst\u00E4ndniserkl\u00E4rung
+disclaimer.default.agreement=Ich habe die Einverst\u00E4ndniserkl\u00E4rung gelesen, verstanden und bin mit ihr einverstanden.
+disclaimer.default.text=Alle von den Umfrageteilnehmern \u00FCbermittelten personenbezogenen Daten werden gem\u00E4ss den Datenschutzvorschriften bearbeitet und in keinem Fall an Dritte weitergegeben.
+disclaimer.not.accepted=Bitte geben Sie zuerst Ihr Einverst\u00E4ndnis.
+disclaimer.text=Einverst\u00E4ndniserkl\u00E4rung
 end.label=End
 error.cannot.save=Speichern fehlgeschlagen
 error.no.number=Falsches Zahlenformat. Beispiele\: 1.0, 0.5, 0.2
 error.outside.range=Der Wert muss zwischen {0} und {1} liegen.
-error.range.overlapping=Zwei Wertebereiche \u00fcberlappen sich.
+error.range.overlapping=Zwei Wertebereiche \u00FCberlappen sich.
 error.wrong.int=Falsches Zahlenformat. Beispiele\: 1, 5, 10
-evaluation.anonymous= Dies ist eine anonyme Umfrage, die Umfrageantworten sind anonymisiert. Es werden keine pers\u00f6nlichen Daten \u00fcber Sie gespeichert, es sei denn, es wird ausdr\u00fccklich danach gefragt (z. B. Alter, Geschlecht). Auch die IP-Adresse des von Ihnen verwendeten PC wird nicht gespeichert. Es gibt somit keinen Weg, die Umfrageergebnisse mit Ihren Daten zusammenzuf\u00fchren.
-evaluation.form.in.use=Die Ressource wird bereits verwendet. Die Bearbeitung ist beschr\u00e4nkt.
-evaluation.form.without.elements=F\u00fcr diesen Fragebogen sind noch keine Fragen vorhanden.
-evaluation.in.progress=Die Einsch\u00e4tzung ist gerade in Bearbeitung
+evaluation.anonymous= Dies ist eine anonyme Umfrage, die Umfrageantworten sind anonymisiert. Es werden keine pers\u00F6nlichen Daten \u00FCber Sie gespeichert, es sei denn, es wird ausdr\u00FCcklich danach gefragt (z. B. Alter, Geschlecht). Auch die IP-Adresse des von Ihnen verwendeten PC wird nicht gespeichert. Es gibt somit keinen Weg, die Umfrageergebnisse mit Ihren Daten zusammenzuf\u00FChren.
+evaluation.form.in.use=Die Ressource wird bereits verwendet. Die Bearbeitung ist beschr\u00E4nkt.
+evaluation.form.without.elements=F\u00FCr diesen Fragebogen sind noch keine Fragen vorhanden.
+evaluation.in.progress=Die Einsch\u00E4tzung ist gerade in Bearbeitung
 evaluator=Benutzer {0}
 file.upload.download.info=Es werden {0} von {1} Dateien angezeigt.
 file.upload.download.link=Alle Dateien herunterladen.
 file.upload.error.limit.exeeded=Die Datei ist zu gross
-file.upload.error.mime.type.wrong=Dieser Dateityps ist nicht erlaubt
-file.upload.limit=Maximale Dateigr\u00f6sse
+file.upload.error.mime.type.wrong=Dieser Dateityp ist nicht erlaubt.
+file.upload.limit=Maximale Dateigr\u00F6sse
 file.upload.mime.type.all=Alle
 file.upload.mime.type.audio=Audio
 file.upload.mime.type.image=Bilder
@@ -61,15 +61,15 @@ htitle=Titel
 multiple.choice.others=Weitere
 multiple.choice.with.others.enabled=Teilnehmer kann weitere Werte erfassen
 multiple.choice.with.others=Weitere
-no.response.help=Aktivieren Sie diese Option, um im Fragebogen die Spalte "Keine Antwort m\u00f6glich" anzuzeigen. Der Teilnehmer kann so zum Ausdruck bringen, dass er nicht in der Lage ist, eine Frage zu beantworten.
-no.response=Keine Antwort m\u00f6glich
+no.response.help=Aktivieren Sie diese Option, um im Fragebogen die Spalte "Keine Antwort m\u00F6glich" anzuzeigen. Der Teilnehmer kann so zum Ausdruck bringen, dass er nicht in der Lage ist, eine Frage zu beantworten.
+no.response=Keine Antwort m\u00F6glich
 report.anonymous.user=Anonym
 report.count.count.title=Anzahl
 report.count.name.title=Wert
 report.excel.legend=Legende
 report.excel.text=Text
 report.export=Export Excel
-report.max.session.exceeded=Die maximale Anzahl von einzelnen Frageb\u00f6gen ({0}) wurde \u00fcberschritten. Die einzelnen Frageb\u00f6gen werden nicht gedruckt.
+report.max.session.exceeded=Die maximale Anzahl von einzelnen Frageb\u00F6gen ({0}) wurde \u00FCberschritten. Die einzelnen Frageb\u00F6gen werden nicht gedruckt.
 report.overview.duration.count=Anzahl
 report.overview.duration.title=Bearbeitungsdauer
 report.overview.duration=Bearbeitungsdauer
@@ -95,20 +95,20 @@ report.session.dummy=
 report.session.participant=Teilnehmer
 report.session.quickview=<i class\='o_icon o_icon_quickview'> </i>
 reports.diagram.report=Diagramme
-reports.session.forms=Frageb\u00f6gen
-reports.session.selection=Einzelne Frageb\u00f6gen
-reports.table.overview=\u00dcbersicht
+reports.session.forms=Frageb\u00F6gen
+reports.session.selection=Einzelne Frageb\u00F6gen
+reports.table.overview=\u00DCbersicht
 reports.table.report=Tabellen
 rubric.column.label=Spaltenbeschriftung
 rubric.good.rating.end=Rechts
-rubric.good.rating.help=Definieren Sie, ob die linke oder die rechte Seite der Skala eine positive Beurteilung darstellt. Diese Angabe wird f\u00fcr die Darstellung des Trenddiagramms verwendet.
+rubric.good.rating.help=Definieren Sie, ob die linke oder die rechte Seite der Skala eine positive Beurteilung darstellt. Diese Angabe wird f\u00FCr die Darstellung des Trenddiagramms verwendet.
 rubric.good.rating.start=Links
 rubric.good.rating=Positive Bewertung
-rubric.insufficient.explanation=Ungen\u00fcgende Beurteilung (Wert zwischen {0} und {1})
-rubric.insufficient=Ungen\u00fcgend
+rubric.insufficient.explanation=Ungen\u00FCgende Beurteilung (Wert zwischen {0} und {1})
+rubric.insufficient=Ungen\u00FCgend
 rubric.lower.bound=von
 rubric.name.display=Anzeige des Namens
-rubric.name.execution=In Durchf\u00fchrung
+rubric.name.execution=In Durchf\u00FChrung
 rubric.name.help=Geben Sie diesem Rubric einen Namen und legen Sie fest, ob dieser im Fragebogen und in den Reports dargestellt werden soll. Im Report werden Rubrics ohne Namen zur Kennzeichnung durchnummeriert.
 rubric.name.report=In Reports
 rubric.name=Name
@@ -116,7 +116,7 @@ rubric.neutral.explanation=Neutrale Beurteilung (Wert zwischen {0} und {1})
 rubric.neutral=Neutral
 rubric.no.response.enabled=Spalte "$\:no.response"
 rubric.rating.help=Definieren Sie den Bereich der Beurteilung "{0}". Die Beurteilung wird in den einzelnen Reports und in der Analyse von Umfragen verwendet. Zudem basieren die Kriterien einiger Datenerhebungsgeneratoren auf diesem Bereich.
-rubric.report.avg.abrev=\u00f8
+rubric.report.avg.abrev=\u00F8
 rubric.report.avg.title=Durchschnitt
 rubric.report.end.lable.title=
 rubric.report.figure.title=Kennzahl
@@ -127,12 +127,12 @@ rubric.report.number.no.responses.abrev=kA
 rubric.report.number.no.responses.title=Anzahl "$\:no.response"
 rubric.report.number.responses.abrev=A
 rubric.report.number.responses.title=Anzahl Antworten
-rubric.report.sdtdev.abrev=\u03c3
+rubric.report.sdtdev.abrev=\u03C3
 rubric.report.sdtdev.title=Standardabweichung
 rubric.report.start.label.title=
 rubric.report.total=Gesamttotal {0}
 rubric.report.value.title=Wert
-rubric.report.variance.abrev=\u03c3\u00b2
+rubric.report.variance.abrev=\u03C3\u00B2
 rubric.report.variance.title=Varianz
 rubric.report.weight.abrev=g
 rubric.report.weight.title=Gewichtung
@@ -141,7 +141,7 @@ rubric.scale.maxToOne=Absteigende Likert-Skala (x bis 1)
 rubric.scale.maxToZero=Absteigende Likert-Skala (x bis 0)
 rubric.scale.oneToMax=Aufsteigende Likert-Skala (1 bis x)
 rubric.scale.zeroToMax=Aufsteigende Likert-Skala (0 bis x)
-rubric.scale.type.help=Legen Sie die Werte der gew\u00e4hlten Skala fest. Die Werte werden in den Reports und der Analyse von Umfragen verwendet.
+rubric.scale.type.help=Legen Sie die Werte der gew\u00E4hlten Skala fest. Die Werte werden in den Reports und der Analyse von Umfragen verwendet.
 rubric.scale.type=Skalentyp
 rubric.scale.zeroBallanced=Symmetrische Likert-Skala (-x bis x)
 rubric.sufficient.explanation=Gute Beurteilung (Wert zwischen {0} und {1})
@@ -152,13 +152,13 @@ rubric.upper.bound=bis
 save.as.done=Speichern und abschliessen
 save.intermediate=Zwischenspeichern
 session.informations.fill.in.label=
-session.informations.fill.in=Automatisch einf\u00fcllen
+session.informations.fill.in=Automatisch einf\u00FCllen
 session.informations.informations=Informationen
 session.informations.label={0}
 session.information.obligation=Obligatorisch / Optional
-session.information.obligation.autofill=Obligatorisch, automatisch ausgef\u00fcllt und nicht bearbeitbar
+session.information.obligation.autofill=Obligatorisch, automatisch ausgef\u00FCllt und nicht bearbeitbar
 session.information.obligation.mandatory=Obligatorisch, bearbeitbar durch den Benutzer
-session.information.obligation.optional=Optional, muss nicht ausgef\u00fcllt werden
+session.information.obligation.optional=Optional, muss nicht ausgef\u00FCllt werden
 session.informations.report.number.participants=Es haben {0} Benutzer/innen an der Umfrage teilgenommen, {1} davon anonym.
 session.informations.type.age=Alter
 single.choice.presentation.dropdown=Auswahlliste
@@ -176,8 +176,8 @@ slider.steps=Schritte
 slider.type=Typ
 slider.weight=Gewicht
 standalone.already.done=Sie haben bereits an der Umfrage teilgenommen. Vielen Dank!
-standalone.done.now=Vielen Dank f\u00fcr Ihre Teilnahme an der Umfrage.
-standalone.not.executable=Die Teilnahme an dieser Umfrage ist (noch) nicht m\u00f6glich.
+standalone.done.now=Vielen Dank f\u00FCr Ihre Teilnahme an der Umfrage.
+standalone.not.executable=Die Teilnahme an dieser Umfrage ist (noch) nicht m\u00F6glich.
 standalone.not.found=Es ist keine Umfrage vorhanden.
 start.label=Beginn
 textinput.download.info=Es werden {0} von {1} Texten angezeigt.
@@ -191,4 +191,4 @@ textinput.rows.mode=Zeilentyp
 textinput.rows=Zeilen
 textinput.single.row=Eine Zeile
 title.example=<h1>Anklicken um Titel zu bearbeiten</h1>
-warning.form.not.completed=Achtung! Sie haben nicht alle Felder ausgef\u00fcllt.
+warning.form.not.completed=Achtung! Sie haben nicht alle Felder ausgef\u00FCllt.
diff --git a/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_en.properties
index de22b0e8c39a3ea9f48eba2d4fb8c7be197d40ec..6bca28ac4e62a8dc686520e1a07e5c694f5f6d00 100644
--- a/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_en.properties
@@ -40,7 +40,7 @@ evaluator=User {0}
 file.upload.download.info={0} of {1} files are shown.
 file.upload.download.link=Download all files.
 file.upload.error.limit.exeeded=The file is too large
-file.upload.error.mime.type.wrong=The data type is not allowed
+file.upload.error.mime.type.wrong=This data type is not allowed.
 file.upload.limit=Maximal file size
 file.upload.mime.type.all=All
 file.upload.mime.type.audio=Audio
@@ -115,7 +115,7 @@ rubric.neutral.explanation=Neutral assessment (value between {0} and {1})
 rubric.neutral=Neutral
 rubric.no.response.enabled=Column "$\:no.response"
 rubric.rating.help=Define the range of the rating "{0}". The rating is used in  reports and in the analysis of surveys. In addition, the criteria of some data collection generators are based on this range.
-rubric.report.avg.abrev=\u00f8
+rubric.report.avg.abrev=\u00F8
 rubric.report.avg.title=Average
 rubric.report.end.lable.title=
 rubric.report.figure.title=Figure
@@ -126,12 +126,12 @@ rubric.report.number.no.responses.abrev=na
 rubric.report.number.no.responses.title=Number of "$\:no.response"
 rubric.report.number.responses.abrev=a
 rubric.report.number.responses.title=Number of answers
-rubric.report.sdtdev.abrev=\u03c3
+rubric.report.sdtdev.abrev=\u03C3
 rubric.report.sdtdev.title=Standard deviation
 rubric.report.start.label.title=
 rubric.report.total=Total {0}
 rubric.report.value.title=Value
-rubric.report.variance.abrev=\u03c3\u00b2
+rubric.report.variance.abrev=\u03C3\u00B2
 rubric.report.variance.title=Variance
 rubric.report.weight.abrev=w
 rubric.report.weight.title=Weight