diff --git a/.hgtags b/.hgtags
index ec219e24bf25210a1ab4d11608d47dd7791861a3..36fb80220db7a30531e6238743bf971cfd43a069 100644
--- a/.hgtags
+++ b/.hgtags
@@ -179,3 +179,4 @@ ced19a2138aadfc4039ebe223e60f5df63e70af2 OpenOLAT 11.2.3
 6c5b3920efe9d0e7c28d10b3f10fd018d9776e8d OpenOLAT 11.2.4
 aa02a5383a846d9b76620693f1713cc1f7a5c3b7 OpenOLAT 11.3.0
 337b0fc7a050487d03ced1635bde15b0f42e7af7 OpenOLAT 11.3.1
+645a985d874cc6a08fd0abd38973b40e21d46161 OpenOLAT 11.3.2
diff --git a/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_zh_CN.properties
index fc9f32d503317d61292e7c985a2882151eac0c69..7bf875fa0b1959ec84a17baa6b497a524814b0df 100644
--- a/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_zh_CN.properties
+++ b/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_zh_CN.properties
@@ -1,5 +1,6 @@
-#Sun Oct 09 05:05:08 CEST 2016
+#Tue Mar 28 14:18:25 CEST 2017
 AssessmentManager=\u8BC4\u4F30\u5DE5\u5177
+Binder=\u7EC4\u5408
 BinderTemplate=Portfolio 2.0 \u6A21\u677F
 BusinessGroup=\u4E8B\u52A1\u7EC4
 CalendarManager=\u65E5\u5386
@@ -18,6 +19,7 @@ FileResource.ANIM=\u52A8\u753B
 FileResource.BLOG=\u535A\u5BA2
 FileResource.DOC=Word
 FileResource.FILE=\u6587\u4EF6
+FileResource.FORM=\u8C03\u67E5\uFF08\u7EC4\u5408\uFF09
 FileResource.GLOSSARY=\u672F\u8BED\u8BCD\u6C47\u8868
 FileResource.IMAGE=\u56FE\u7247
 FileResource.IMSCP=CP\u5B66\u4E60\u5185\u5BB9\u5305
@@ -40,6 +42,7 @@ GroupTask=\u4EFB\u52A1
 Inbox=\u6536\u4EF6\u7BB1
 InfoMessage=\u6D88\u606F
 LibrarySite=\u5E93
+PFCourseNode=\u4E0B\u62C9\u6846
 ReturnboxController=\u53CD\u9988\u7BB1
 SolutionController=\u793A\u4F8B\u65B9\u6848
 User=\u7528\u6237
diff --git a/src/main/java/org/olat/core/commons/services/sms/ui/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/core/commons/services/sms/ui/_i18n/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000000000000000000000000000000000000..f400c5e8aa1f9822105650f52daf8b7bc6d7c2be
--- /dev/null
+++ b/src/main/java/org/olat/core/commons/services/sms/ui/_i18n/LocalStrings_zh_CN.properties
@@ -0,0 +1,27 @@
+#Mon Mar 27 15:06:01 CEST 2017
+admin.configuration.description=\u77ED\u4FE1\u901A\u77E5\u662F\u4E00\u4E2A\u53EF\u9009\u7684\u7EC4\u4EF6\u3002\u8B66\u544A\uFF1A\u53D1\u9001\u77ED\u4FE1\u901A\u77E5\u9700\u8981\u4ED8\u8D39\uFF01
+admin.configuration.title=\u77ED\u4FE1\u914D\u7F6E
+admin.enable=\u77ED\u4FE1\u53D1\u5E03
+admin.menu.title=SMS
+admin.menu.title.alt=SMS\u914D\u7F6E\u548C\u7EDF\u8BA1
+admin.settings=SMS\u670D\u52A1\u914D\u7F6E
+admin.statistics=SMS\u53D1\u9001
+confirm.sms.phone=<h3>\u77ED\u4FE1\u8BA4\u8BC1</h3><p>\u7CFB\u7EDF\u5141\u8BB8\u901A\u8FC7\u77ED\u4FE1\u9A8C\u8BC1\u91CD\u7F6E\u5BC6\u7801\u4E22\u5931\u3002\u8BF7\u8F93\u5165\u60A8\u7684\u624B\u673A\u53F7\u7801\u4EE5\u6FC0\u6D3B\u6B64\u670D\u52A1\u3002
+dont.activate=\u4E0D\u6FC0\u6D3B
+error.invalid.token=code\u65E0\u6548
+error.phone.invalid=\u4E0D\u662F\u6709\u6548\u7684\u7535\u8BDD\u53F7\u7801\uFF08\u4F8B\u5982 +41 12 345 67 89\uFF09
+on=\u5F00\u542F
+on.sms=SMS code
+reset.password=\u91CD\u7F6E\u5BC6\u7801
+service=\u670D\u52A1
+sms.phone.number=\u79FB\u52A8\u7535\u8BDD
+sms.phone.number.example=\u5FC5\u987B\u6309\u56FD\u9645\u683C\u5F0F\u8F93\u5165\u7535\u8BDD\u53F7\u7801\uFF08\u4F8B\u5982 +41 12 345 67 89\uFF09
+sms.phone.number.hint=+41 12 345 67 89
+sms.token=\u60A8\u7684\u4EE4\u724C\u662F{ 0 }
+sms.token.number=Code
+sms.token.number.explain=\u8BF7\u8F93\u51656\u4F4D\u6570\u5B57\u7684\u77ED\u4FE1\u9A8C\u8BC1\u7801\u3002\u5982\u679C1\u5206\u949F\u540E\u8FD8\u6CA1\u6709\u6536\u5230\u77ED\u4FE1\u9A8C\u8BC1\u7801\uFF0C\u8BF7\u786E\u8BA4\u60A8\u8F93\u5165\u4E86\u6B63\u786E\u7684\u56FD\u5BB6\u53F7\u7801\u3002
+start.sms.authentication=\u5F00\u59CB\u77ED\u4FE1\u8BA4\u8BC1
+table.header.month=\u6708\u4EFD
+table.header.numOfMessages=\u77ED\u4FE1
+table.header.year=\u5E74
+warning.spi.not.configured=\u670D\u52A1\u672A\u8BBE\u7F6E
diff --git a/src/main/java/org/olat/core/gui/render/velocity/VelocityTemplatesPreWarm.java b/src/main/java/org/olat/core/gui/render/velocity/VelocityTemplatesPreWarm.java
index 8e7c09589e37c68fc04233e976328044fea5d4d1..72727061446f90598e224b7d6a96498511972a62 100644
--- a/src/main/java/org/olat/core/gui/render/velocity/VelocityTemplatesPreWarm.java
+++ b/src/main/java/org/olat/core/gui/render/velocity/VelocityTemplatesPreWarm.java
@@ -59,27 +59,26 @@ public class VelocityTemplatesPreWarm implements PreWarm {
 		final File root = new File(WebappHelper.getContextRoot(), "WEB-INF/classes");
 		final Path fPath = root.toPath();
 		try {
-			Files.walkFileTree(fPath, new SimpleFileVisitor<Path>() {
-
-				@Override
-				public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
-					try {
-						
-						String path = fPath.relativize(file).toString();
-						if(path.endsWith(".html") && path.contains("/_content/")) {
-							StringOutput writer = new StringOutput();
-							VelocityHelper.getInstance().mergeContent(path, context, writer, null);
-							
-							numOfTemplates.incrementAndGet();
+			if(Files.exists(fPath)) {
+				Files.walkFileTree(fPath, new SimpleFileVisitor<Path>() {
+					@Override
+					public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
+						try {
+							String path = fPath.relativize(file).toString();
+							if(path.endsWith(".html") && path.contains("/_content/")) {
+								StringOutput writer = new StringOutput();
+								VelocityHelper.getInstance().mergeContent(path, context, writer, null);
+								numOfTemplates.incrementAndGet();
+							}
+						} catch (ResourceNotFoundException e) {
+							log.error("", e);
+						} catch (ParseErrorException e) {
+							log.error("", e);
 						}
-					} catch (ResourceNotFoundException e) {
-						log.error("", e);
-					} catch (ParseErrorException e) {
-						log.error("", e);
+						return FileVisitResult.CONTINUE;
 					}
-					return FileVisitResult.CONTINUE;
-				}
-			});
+				});
+			}
 		} catch (IOException e) {
 			log.error("", e);
 		}
diff --git a/src/main/java/org/olat/course/nodes/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/course/nodes/_i18n/LocalStrings_zh_CN.properties
index 210e6faf6b52bdd4487ebeae498f7be5e1277467..bcb04ee9089d8826daab49b040634dd57990d038 100644
--- a/src/main/java/org/olat/course/nodes/_i18n/LocalStrings_zh_CN.properties
+++ b/src/main/java/org/olat/course/nodes/_i18n/LocalStrings_zh_CN.properties
@@ -1,12 +1,16 @@
-#Mon Oct 10 15:10:44 CEST 2016
+#Tue Mar 28 09:56:00 CEST 2017
 editor.lock.message=\u672C\u5B66\u7A0B\u5143\u7D20\u6B63\u5728\u4FEE\u6539\uFF0C\u56E0\u6B64\u5DF2\u9501\u5B9A\u3002
 editor.lock.title=\u5B66\u7A0B\u5143\u7D20\u5DF2\u9501\u5B9A
+freezenoaccess.message=\u672C\u8BFE\u7A0B\u5904\u4E8E\u53EA\u8BFB\u6A21\u5F0F
+freezenoaccess.title=\u4E0D\u53EF\u8BBF\u95EE
 guestnoaccess.message=\u6E38\u5BA2\u65E0\u6CD5\u8BBF\u95EE\u8BE5\u90E8\u5206\u5B66\u7A0B\u3002<p>\u4F60\u53EF\u4EE5\u6CE8\u518C\u4E3AOLAT\u7528\u6237\u6216\u8005\u901A\u8FC7\u4F60\u6240\u5728\u5927\u5B66\u7684\u9A8C\u8BC1\u624D\u53EF\u4EE5\u8BBF\u95EE\u8BE5\u90E8\u5206\u5B66\u7A0B</p>\u3002
 guestnoaccess.title=\u6E38\u5BA2\u65E0\u6CD5\u8BBF\u95EE
 learningObjectives.title=\u63CF\u8FF0
+personal.title=\u6027\u80FD\u7EFC\u8FF0
 preview.notavailable=\u65E0\u6CD5\u9884\u89C8\u8BE5\u5B66\u7A0B\u5143\u7D20\u3002
 title_bc=\u6587\u4EF6\u5939
 title_blog=\u535A\u5BA2
+title_checklist=\u68C0\u67E5\u6E05\u5355
 title_cl=\u68C0\u67E5\u5217\u8868
 title_co=\u7535\u5B50\u90AE\u4EF6
 title_cp=CP\u5B66\u4E60\u5185\u5BB9\u5305
@@ -14,16 +18,21 @@ title_den=\u5165\u5B66\u65E5\u671F
 title_dialog=\u6587\u4EF6\u5BF9\u8BDD\u6846
 title_en=\u5165\u5B66\u6CE8\u518C
 title_fo=\u8BBA\u575B
+title_gta=\u7FA4\u7EC4\u4EFB\u52A1
 title_iqself=\u81EA\u6D4B
 title_iqsurv=\u8C03\u67E5\u95EE\u5377
 title_iqtest=\u6D4B\u9A8C
+title_ita=\u4EFB\u52A1
 title_ll=\u94FE\u63A5\u5217\u8868
 title_ms=\u8BC4\u4F30
+title_pf=\u53C2\u5165\u8005\u6587\u4EF6\u5939
 title_podcast=\u64AD\u5BA2
 title_projectbroker=\u9879\u76EE\u7ECF\u7EAA\u4EBA
+title_qti21assessment=\u6D4B\u9A8C (QTI 2.1)
 title_scorm=SCORM\u5B66\u4E60\u5185\u5BB9\u5305
 title_sp=\u5185\u90E8html
 title_st=\u7ED3\u6784
 title_ta=\u4EFB\u52A1
 title_tu=\u5916\u90E8html
+title_video=\u89C6\u5C4F
 title_wiki=\u7EF4\u57FA
diff --git a/src/main/java/org/olat/course/nodes/basiclti/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/course/nodes/basiclti/_i18n/LocalStrings_zh_CN.properties
index fbbd86f0390c4e9406374e79c7b1134f2a545065..0a318c3c14caf141014be70953262d35fa7e4ad9 100644
--- a/src/main/java/org/olat/course/nodes/basiclti/_i18n/LocalStrings_zh_CN.properties
+++ b/src/main/java/org/olat/course/nodes/basiclti/_i18n/LocalStrings_zh_CN.properties
@@ -1,4 +1,4 @@
-#Wed Aug 25 10:19:17 CEST 2010
+#Tue Mar 28 11:40:36 CEST 2017
 LTConfigForm.invalidurl=\u8BF7\u8F93\u5165\u4E00\u4E2A\u6709\u6548\u7684URL\u3002
 LTConfigForm.key=\u5BC6\u94A5
 LTConfigForm.key.example=\u4F8B\u5982\uFF1A12345
@@ -8,5 +8,57 @@ LTConfigForm.save=\u4FDD\u5B58
 LTConfigForm.url=URL
 LTConfigForm.url.example=\u4F8B\u5982\uFF1Ahttp\://wiscrowd.appspot.com/wiscrowd/
 LTConfigForm.user=\u7528\u6237\u540D
-
-
+accept=\u6211\u63A5\u53D7\u6570\u636E\u4F20\u8F93
+accept.intro=\u4EE5\u4E0B\u9875\u9762\u662F\u4ECE\u5916\u90E8\u670D\u52A1\u5668\u52A0\u8F7D\u7684\u3002\u4E3A\u4E86\u8FD9\u4E2A\u76EE\u7684\uFF0C\u4F60\u7684\u4E00\u4E9B\u4E2A\u4EBA\u6570\u636E\u5C06\u88AB\u53D1\u9001\u5230\u5916\u90E8\u670D\u52A1\u5668\uFF0C\u5217\u51FA\u5982\u4E0B\u3002\u8BF7\u68C0\u67E5\u6570\u636E\u5E76\u63A5\u53D7\u6570\u636E\u7684\u4F20\u8F93\u3002
+accept.title=\u63A5\u53D7\u6570\u636E\u4F20\u8F93
+add=+
+assessable.label=\u4F20\u8F93\u5206\u6570
+attempts.yourattempts=$org.olat.course.nodes.scorm\:attempts.yourattempts
+author.roles=\u4F5C\u8005
+coach.roles=\u6559\u5E08
+command.preview=\u663E\u793A\u9884\u89C8
+condition.accessibility.title=\u8BBF\u95EE
+cshelp.lti1=LTI\u610F\u5473\u7740\u201C\u5B66\u4E60\u5DE5\u5177\u4E92\u64CD\u4F5C\u6027\u201D\uFF0C\u4EE3\u8868IMS\u6807\u51C6\uFF08\u5C06\u5916\u90E8\u5B66\u4E60\u5E94\u7528\u5D4C\u5165\u5230\u5B66\u4E60\u5E73\u53F0\u7684\u6807\u51C6\uFF09\u3002
+cutvalue.label=\u53CA\u683C\u5206\u6570
+display.config.custom=\u9644\u52A0\u5C5E\u6027
+display.config.doDebug=\u663E\u793A\u6240\u6709\u4F20\u8F93\u7684\u4FE1\u606F
+display.config.free=\u6587\u672C
+display.config.free.userprops=\u7528\u6237
+display.config.height=$org.olat.core.gui.control.generic.iframe\:height.label
+display.config.sendEmail=\u4F20\u8F93email\u5730\u5740
+display.config.sendName=\u4F20\u8F93\u59D3\u540D
+display.config.width=\u663E\u793A\u5BBD\u5EA6
+display.config.window=\u663E\u793A
+display.config.window.fullScreen=\u53EA\u663E\u793A\u6A21\u5757\uFF0C\u9690\u85CFLMS(iFrame)
+display.config.window.iframe=\u5D4C\u5165\u5728\u8BFE\u7A0B\u4E2D\uFF08iFrame\uFF09
+display.config.window.window=\u5728\u65B0\u7A97\u53E3\u4E2D\u6253\u5F00
+error.hostmissing.long=\u5728\u201C\u9875\u9762\u5185\u5BB9\u201D\u9875\u7B7E\uFF0C\u5FC5\u987B\u4E3A\u5916\u90E8\u9875\u9762\u201C{0}\u201D\u8BBE\u7F6E\u4E3B\u673A\u3002
+error.hostmissing.short=\u6CA1\u6709\u4E3A\u201C{0}\u201D\u6307\u5B9A\u4E3B\u673A\u3002
+form.error.wrongFloat=$org.olat.course.assessment\:form.error.wrongFloat
+form.title=LTI\u9875\u9762\u7684\u8BBE\u7F6E
+height.auto=$org.olat.core.gui.control.generic.iframe\:height.auto
+pane.tab.accessibility=\u8BBF\u95EE
+pane.tab.highscore=\u6700\u9AD8\u5206
+pane.tab.ltconfig=\u9875\u9762\u5185\u5BB9
+participant.roles=\u53C2\u5165\u8005
+passed.no=$org.olat.course.nodes.ms\:passed.no
+passed.yes=$org.olat.course.nodes.ms\:passed.yes
+passed.yourpassed=$org.olat.course.nodes.ms\:passed.yourpassed
+popup.info=\u672C\u5B66\u4E60\u5185\u5BB9\u5C06\u5728\u65B0\u7A97\u53E3\u6253\u5F00\u3002\u5982\u679C\u65B0\u7A97\u53E3\u6CA1\u6709\u81EA\u52A8\u6253\u5F00\uFF0C\u8BF7\u70B9\u51FB\u4E0B\u9762\u7684\u94FE\u63A5\u3002
+popup.link=\u91CD\u65B0\u6253\u5F00\u5B66\u4E60\u5185\u5BB9
+preview=\u9884\u89C8
+remove=-
+roles.lti.administrator=\u7BA1\u7406\u5458
+roles.lti.contentDeveloper=\u5B66\u4E60\u5185\u5BB9\u5F00\u53D1\u8005
+roles.lti.instructor=\u4EFB\u8BFE\u6559\u5E08
+roles.lti.learner=\u5B66\u4E60\u8005
+roles.lti.mentor=\u5BFC\u5E08
+roles.lti.teachingAssistant=\u6559\u5B66\u52A9\u7406
+roles.title.lti=LTI\u811A\u8272
+roles.title.oo=OpenOLAT\u811A\u8272
+scaleFactor=\u6BD4\u4F8B\u56E0\u5B50
+score.noscoreinfoyet=\u56E0\u4E3A\u60A8\u8FD8\u6CA1\u6709\u542F\u52A8LTI\u6A21\u5757\uFF0C\u8FD8\u6CA1\u6709\u5206\u6570\u3002
+score.title=$org.olat.course.nodes.scorm\:score.title
+score.yourscore=\u6DFB\u52A0\u8BC4\u8BBA
+start=\u542F\u52A8LTI\u5B66\u4E60\u6A21\u5757
+title_lti=LTI\u9875
diff --git a/src/main/java/org/olat/course/nodes/bc/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/course/nodes/bc/_i18n/LocalStrings_zh_CN.properties
index 4e11bdc46618fbdca94f8ec4a4c61e1f37f4fdfd..21f32e1bd42609c48013652643d6f10b6195c982 100644
--- a/src/main/java/org/olat/course/nodes/bc/_i18n/LocalStrings_zh_CN.properties
+++ b/src/main/java/org/olat/course/nodes/bc/_i18n/LocalStrings_zh_CN.properties
@@ -1,26 +1,31 @@
-#Tue Aug 17 15:38:16 CEST 2010
-
-
-
-
-
-
+#Tue Mar 28 11:58:21 CEST 2017
+chooseFolder=\u9009\u62E9\u6587\u4EF6\u5939
 condition.accessDownloaders.title=\u53EA\u8BFB (\u4E0B\u8F7D)
 condition.accessUploaders.title=\u8BFB\u5199 (\u4E0A\u4F20/\u4E0B\u8F7D)
+createButton=\u521B\u5EFA\u6587\u4EF6\u5939
+createPath=\u8981\u521B\u5EFA\u7684\u8DEF\u5F84
+error.missingfolder.long=\u6587\u4EF6\u5939\u8BBE\u7F6E\u4E0D\u5B8C\u6574
 folder.view=\u6253\u5F00\u6587\u4EF6\u5939
-
-
-
 info.folder=\u5C06\u6587\u4EF6\u5B58\u5165\u6587\u4EF6\u5939
 info.quota=\u4FEE\u6539\u8BE5\u6587\u4EF6\u5939\u914D\u989D
+info.select=\u9009\u62E9\u6587\u4EF6\u5939
+info.sharedfolder=\u4E0D\u80FD\u4E0A\u4F20\u5230\u8BBE\u7F6E\u7684\u8D44\u6E90\u6587\u4EF6\u5939\uFF0C\u8BFE\u7A0B\u7684\u6240\u6709\u6210\u5458\u53EA\u6709\u8BFB\u53D6\uFF08\u4E0B\u8F7D\uFF09\u6743\u9650\u3002
+noFolder=\u9884\u7F6E\u7684\u6587\u4EF6\u5939\u4E0D\u5B58\u5728\uFF0C\u8BF7\u4E0E\u8BFE\u7A0B\u7BA1\u7406\u5458\u8054\u7CFB\u3002
 pane.tab.accessibility=\u8BBF\u95EE\u6027
 pane.tab.folder=\u6587\u4EF6\u5939\u914D\u7F6E
+pathChoose=\u76EE\u6807\u6587\u4EF6
+pathChoose.auto=\u81EA\u52A8\u751F\u6210\u7684\u6587\u4EF6\u5939
+pathChoose.custom=\u4ECE\u8BFE\u7A0B\u5B58\u50A8\u9009\u62E9\u6587\u4EF6\u5939
 peekview.allItemsLink=\u6240\u6709\u6587\u6863
 preview.canDownload=\u5141\u8BB8\u4E0B\u8F7D
 preview.canUpload=\u5141\u8BB8\u4E0A\u4F20
 preview.conf.toggle=\u5207\u6362\u914D\u7F6E \u5F00\u542F/\u5173\u95ED
+preview.downloadfile=\u4E0B\u8F7D\u6587\u4EF6
 preview.header=Configuration folder for simulated user
 preview.info=\u8BE5\u6587\u4EF6\u5939\u4E2D\u7684\u5185\u5BB9\u663E\u793A\u5982\u4E0B(\u53EA\u8BFB\!)
 preview.quotaKB=\u914D\u989D KB
+subPathLab.dummy=\u8FD8\u6CA1\u6709\u8BBE\u7F6E\u6587\u4EF6\u5939
+subPathLab.label=\u6587\u4EF6\u8DEF\u5F84
 title_bc=\u5171\u4EAB\u6587\u4EF6\u5939
 warn.folderdelete=\u8B66\u544A\: \u8BE5\u6587\u4EF6\u5939\u4E2D\u7684\u6587\u4EF6\u90FD\u5C06\u5220\u9664
+warning.no.sharedfolder=\u8BBE\u7F6E\u7684\u8D44\u6E90\u6587\u4EF6\u5939\u4E0D\u518D\u5B58\u5728
diff --git a/src/main/java/org/olat/course/nodes/cal/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/course/nodes/cal/_i18n/LocalStrings_zh_CN.properties
index 8476403b64c42b9c8185d59845268c1ce443f86e..9171566b5c290fc75cb088d73e9ebd2fa52f7110 100644
--- a/src/main/java/org/olat/course/nodes/cal/_i18n/LocalStrings_zh_CN.properties
+++ b/src/main/java/org/olat/course/nodes/cal/_i18n/LocalStrings_zh_CN.properties
@@ -1,4 +1,4 @@
-#Thu Nov 05 14:27:46 CET 2015
+#Tue Mar 28 11:59:17 CEST 2017
 calendar.date=\u65E5\u671F
 calendar.noEvents=\u60A8\u60F3\u8981\u4E86\u89E3\u7684\u65F6\u95F4\u6BB5\u5185\u65E0\u4EFB\u4F55\u65F6\u95F4
 calendar.subject=\u63CF\u8FF0
@@ -6,7 +6,7 @@ calendar.title=\u65E5\u5386
 calendar.today=\u4ECA\u5929
 condition.accessibility.title=\u8BFB\u53D6
 condition.editable.title=\u521B\u5EFA/\u7F16\u8F91\u4E8B\u4EF6
-
+fhelp.start_date=\u786E\u5B9A\u662F\u5426\u8981\u663E\u793A\u5F53\u524D\u65E5\u5386\u5468\u6216\u9884\u8BBE\u65E5\u671F\uFF08\u4F8B\u5982\u67D0\u5B66\u671F\u7684\u4E00\u5468\uFF09\u3002
 pane.tab.accessibility=\u8BBF\u95EE
 pane.tab.auto_date=\u5F53\u524D\u65E5\u671F
 pane.tab.calconfig=\u914D\u7F6E\u65E5\u5386
diff --git a/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000000000000000000000000000000000000..643ccdf886b26e6155256d1dd56fcbc7ac21335b
--- /dev/null
+++ b/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_zh_CN.properties
@@ -0,0 +1,65 @@
+#Tue Mar 28 12:45:19 CEST 2017
+add.checkbox=\u6DFB\u52A0\u590D\u9009\u6846
+assessment=\u8BC4\u4F30
+assessment.checkbox.description=\u7F16\u8F91\u6BCF\u4E2A\u590D\u9009\u6846\uFF1A\u5E94\u7528\u590D\u9009\u6846\u8FC7\u6EE4\u5668\u7F16\u8F91\u6240\u6709\u53C2\u4E0E\u8005\u76F8\u540C\u7684\u590D\u9009\u6846\u3002
+award.point.on=\u8BB0\u5206
+box.assessment=\u7F16\u8F91\u5355\u4E2A\u590D\u9009\u6846
+box.check=\u5355\u9009
+box.points=\u5206\u6570
+box.points.info=({0} \u5206)
+checkbox.title=\u6807\u9898
+checklist=\u6E05\u5355
+checklist.point.example=\u5206\u6570\uFF08\u6700\u4F4E\uFF1A{0}/\u6700\u9AD8\uFF1A{1}\uFF09
+checklist.update.assessment=\u66F4\u65B0\u6240\u6709\u8BFE\u7A0B\u53C2\u5165\u8005\u7684\u8BC4\u4F30\u4FE1\u606F\u3002
+checklist.update.efficiencystatements=\u66F4\u65B0\u6240\u6709\u7528\u6237\u7684\u8BC1\u4E66\u3002
+coach.desc=\u5728\u4E0B\u9762\u7684\u5217\u8868\u4E2D\uFF0C\u60A8\u5C06\u627E\u5230\u60A8\u6240\u6559\u8BFE\u7A0B\u7684\u6240\u6709\u53C2\u5165\u8005\u3002\u9009\u62E9"$\:table.header.edit.checkbox" \u4FEE\u6539\u590D\u9009\u6807\u8BB0\u6216\u53C2\u5165\u8005\u7684\u5206\u6570
+coach.due.date.desc=\u8BF7\u6CE8\u610F\uFF0C\u672C\u6E05\u5355\u6709\u622A\u81F3\u65E5\u671F\u3002\u4F5C\u4E3A\u4E00\u540D\u6559\u5E08\uFF0C\u60A8\u5E94\u8BE5\u5728\u6700\u540E\u671F\u9650\u5230\u671F\u540E\u8FDB\u884C\u4FEE\u6539\u3002
+comment.nocomment=$org.olat.course.nodes.ms\:comment.nocomment
+comment.title=$org.olat.course.nodes.ms\:comment.title
+condition.accessibility.title=\u8BBF\u95EE
+config.checkbox.description=\u70B9\u51FB "$\:add.checkbox" \u521B\u5EFA\u590D\u9009\u6846\u6216\u9009\u62E9"$org.olat.core\:edit" \u8BBE\u7F6E\u73B0\u6709\u590D\u9009\u6846\u3002
+config.checkbox.title=$\:pane.tab.checkbox
+config.comment=\u4E2A\u4EBA\u8BC4\u8BBA
+config.cutvalue=\u901A\u8FC7\u5206\u6570\u7EBF
+config.description=\u9009\u62E9\u6E05\u5355\u7684\u622A\u6B62\u65E5\u671F\uFF0C\u622A\u6B62\u65E5\u671F\u540E\u6E05\u5355\u5BF9\u6240\u6709\u7528\u6237\u9501\u5B9A\u3002\u901A\u8FC7\u72B6\u6001\u6216\u5206\u6570\u7684\u4FE1\u606F\u5728\u8FD9\u91CC\u6FC0\u6D3B\u3002
+config.due.date=\u622A\u6B62\u65E5\u671F
+config.due.date.on=\u622A\u6B62\u65E5\u671F\u9501\u5B9A\u7528\u6237\u6E05\u5355
+config.output=\u663E\u793A\u7C7B\u578B
+config.output.coach=\u5BFC\u5E08\u624B\u52A8
+config.output.cutvalue=\u81EA\u52A8\uFF08\u6309\u5206\u6570\u7EBF\uFF09
+config.output.sum=\u81EA\u52A8\uFF08\u6309\u590D\u9009\u6846\u4E2A\u6570\uFF09
+config.passed=\u663E\u793A\u901A\u8FC7/\u672A\u901A\u8FC7
+config.points=\u5F97\u5206
+config.points.max=\u6700\u9AD8\u5206\u6570
+config.points.min=\u6700\u4F4E\u5206\u6570
+config.points.on=\u590D\u9009\u6846\u603B\u6570
+config.tip.coach=\u7ED9\u5BFC\u5E08\u7684\u901A\u77E5
+config.tip.user=\u7ED9\u6240\u6709\u7528\u6237\u7684\u901A\u77E5
+config.title=\u6E05\u5355\u8BBE\u7F6E
+config.warning.inuse=\u7528\u6237\u5DF2\u7ECF\u9009\u62E9\u4E86\u590D\u9009\u6846\uFF0C\u4FEE\u6539\u5206\u6570\u4F1A\u5F71\u54CD\u4ED6\u4EEC\u7684\u6210\u7EE9\u3002
+description=\u63CF\u8FF0
+details=\u7EC6\u8282
+done.by=\u5B8C\u6210\u4E8E\uFF1A
+edit.checkbox=\u7F16\u8F91\u590D\u9009\u6846
+file=\u6587\u4EF6
+filter.all=\u5168\u90E8\u663E\u793A
+form.error.date=\u5FC5\u987B\u6307\u5B9A\u65E5\u671F
+form.error.scoreOutOfRange=$org.olat.course.assessment\:form.error.scoreOutOfRange
+form.error.wrongFloat=$org.olat.course.nodes.ms\:form.error.wrongFloat
+info.title=$org.olat.course.nodes.ms\:info.title
+label=\u6807\u7B7E
+label.achieved=\u5F52\u6863
+label.controlled=\u5DF2\u9A8C\u8BC1
+label.done=\u5B8C\u6210
+label.fulfilled=\u5DF2\u5B8C\u6210
+label.inWork=\u5DF2\u5904\u7406
+label.passed=\u901A\u8FC7
+label.present=Attendant
+label.presented=Presented
+num.of.checklist=\u6570\u91CF
+pane.tab.accessibility=\u8BBF\u95EE
+pane.tab.checkbox=\u590D\u9009\u6846
+pane.tab.clconfig=\u8BBE\u7F6E
+pane.tab.highscore=\u6700\u9AD8\u5206
+participants=\u6210\u5458
+passed.cut=$org.olat.course.nodes.ms\:passed.cut
diff --git a/src/main/java/org/olat/course/nodes/gta/manager/GTAManagerImpl.java b/src/main/java/org/olat/course/nodes/gta/manager/GTAManagerImpl.java
index bba5000030c01bb284bddbb616a09adaba03c344..b1e4a9023709f4582c0afe4cb31dd7694b0dee4d 100644
--- a/src/main/java/org/olat/course/nodes/gta/manager/GTAManagerImpl.java
+++ b/src/main/java/org/olat/course/nodes/gta/manager/GTAManagerImpl.java
@@ -26,10 +26,12 @@ import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import javax.persistence.LockModeType;
 import javax.persistence.Query;
@@ -889,18 +891,6 @@ public class GTAManagerImpl implements GTAManager, DeletableGroupData {
 	}
 	
 	protected String nextSlotRoundRobin(String[] slots, List<String> usedSlots) {
-		//remove previous rounds
-		Set<String> usedOnce = new HashSet<>();
-		for(Iterator<String> usedSlotIt=usedSlots.iterator(); usedSlotIt.hasNext(); ) {
-			String usedSlot = usedSlotIt.next();
-			if(usedOnce.contains(usedSlot)) {
-				usedSlotIt.remove();
-			} else {
-				usedOnce.add(usedSlot);
-			}
-		}
-		
-		//usedSlots are cleaned and contains only current round
 		String nextSlot = null;
 		for(String slot:slots) {
 			if(!usedSlots.contains(slot)) {
@@ -909,11 +899,41 @@ public class GTAManagerImpl implements GTAManager, DeletableGroupData {
 			}	
 		}
 		
+		//not found an used slot
 		if(nextSlot == null) {
-			//begin a new round
-			if (slots.length > 0) {
-				nextSlot = slots[0];
+			//statistics
+			Map<String,AtomicInteger> usages = new HashMap<>();
+			for(String usedSlot:usedSlots) {
+				if(usages.containsKey(usedSlot)) {
+					usages.get(usedSlot).incrementAndGet();
+				} else {
+					usages.put(usedSlot, new AtomicInteger(1));
+				}
+			}
+			
+			int minimum = Integer.MAX_VALUE;
+			for(AtomicInteger slotUsage:usages.values()) {
+				minimum = Math.min(minimum, slotUsage.get());	
 			}
+			Set<String> slotsWithMinimalUsage = new HashSet<>();
+			for(Map.Entry<String, AtomicInteger> slotUsage:usages.entrySet()) {
+				if(slotUsage.getValue().get() == minimum) {
+					slotsWithMinimalUsage.add(slotUsage.getKey());
+				}
+			}
+			
+			//found the next slot with minimal usage
+			for(String slot:slots) {
+				if(slotsWithMinimalUsage.contains(slot)) {
+					nextSlot = slot;
+					break;
+				}	
+			}
+		}
+		
+		//security
+		if(nextSlot == null && slots.length > 0) {
+			nextSlot = slots[0];
 		}
 		return nextSlot;
 	}
diff --git a/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_it.properties
index c91c1a18de9432b7084e85f4faab047f8a955632..0aea979b95e3922a776642671de4033095433d2a 100644
--- a/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_it.properties
+++ b/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_it.properties
@@ -1,4 +1,4 @@
-#Mon Mar 20 13:19:39 CET 2017
+#Tue Mar 28 11:56:35 CEST 2017
 Intro.self=Prema su "Avviare" per cominciare l'autotest.
 Intro.surv=Prema su "Avviare" per cominciare il questionario.
 Intro.test=Prema su "Avviare" per cominciare il test.
@@ -47,6 +47,7 @@ error.test.undefined.long=Non \u00E8 definito alcun test per "{0}". Ne selezioni
 error.test.undefined.short=Non \u00E8 definito alcun test per "{0}".
 fieldset.chosecreateeditfile=Testo informativo (pagina HTML)
 file.name=File selezionato
+hour.short=h
 info.assessment=I risultati di questo test possono essere visionati dagli amministratori e dai tutori di questo corso.
 info.nodedelete=I dati finora raccolti su questo elemento di corso vengono archiviati nella Sua cartella personale sotto private/archive/[nome del corso]/.
 info.selfassessment=I risultati di questo autotest <b>non</b> non possono essere visionati dagli amministratori e dai tutori di questo corso.
diff --git a/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectBrokerExportGenerator.java b/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectBrokerExportGenerator.java
index cb95af8abffaba380daf0a609e12bffaca5505e1..cf648a1019233668f8b24bed096df762da609759 100644
--- a/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectBrokerExportGenerator.java
+++ b/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectBrokerExportGenerator.java
@@ -39,6 +39,7 @@ import org.olat.core.logging.Tracing;
 import org.olat.core.util.Util;
 import org.olat.course.ICourse;
 import org.olat.course.nodes.CourseNode;
+import org.olat.course.nodes.projectbroker.ProjectBrokerControllerFactory;
 import org.olat.course.nodes.projectbroker.datamodel.CustomField;
 import org.olat.course.nodes.projectbroker.datamodel.Project;
 import org.olat.course.nodes.projectbroker.datamodel.ProjectEvent;
@@ -66,7 +67,7 @@ public class ProjectBrokerExportGenerator {
 	 * @return String
 	 */
 	public static String createCourseResultsOverviewTable(CourseNode courseNode, ICourse course, Locale locale) {
-	  Translator translator = Util.createPackageTranslator(ProjectBrokerExportGenerator.class, locale);
+		Translator translator = Util.createPackageTranslator(ProjectBrokerControllerFactory.class, locale);
 		StringBuilder table = new StringBuilder();
 		ProjectBrokerModuleConfiguration moduleConfig = new ProjectBrokerModuleConfiguration(courseNode.getModuleConfiguration());
 		
diff --git a/src/main/java/org/olat/course/nodes/scorm/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/course/nodes/scorm/_i18n/LocalStrings_it.properties
index fc60edaff3a2e4b7114eaf4cffb778d56dd8d7ce..7c783066a02ade3c3b64794ce7ad24cbdc942cfb 100644
--- a/src/main/java/org/olat/course/nodes/scorm/_i18n/LocalStrings_it.properties
+++ b/src/main/java/org/olat/course/nodes/scorm/_i18n/LocalStrings_it.properties
@@ -1,4 +1,4 @@
-#Wed Jun 29 15:28:09 CEST 2016
+#Tue Mar 28 11:56:52 CEST 2017
 advance.score.label=Impedire la diminuzione del punteggio per tentativi successivi
 assessable.label=Riportare punti da SCORM
 assessable.type.none=Non trasferire informazioni sul punteggio
@@ -35,6 +35,7 @@ no.cp.chosen=<i>Nessun contenuto didattico SCORM selezionato</i>
 pane.tab.accessibility=Accesso
 pane.tab.cpconfig=Contenuto didattico
 pane.tab.delivery=$org.olat.core.gui.control.generic.iframe\:option.delivery
+pane.tab.highscore=Classifica
 passed.no=Non superato
 passed.yes=Superato
 passed.yourpassed=Stato
diff --git a/src/main/java/org/olat/course/nodes/st/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/course/nodes/st/_i18n/LocalStrings_it.properties
index 73e2f5ac142c724f7d3fb8c0ecc575b420acb0a2..715edf16493f80e52d257c341f26152495a26c52 100644
--- a/src/main/java/org/olat/course/nodes/st/_i18n/LocalStrings_it.properties
+++ b/src/main/java/org/olat/course/nodes/st/_i18n/LocalStrings_it.properties
@@ -1,4 +1,4 @@
-#Wed Feb 01 14:16:35 CET 2017
+#Tue Mar 28 11:57:32 CEST 2017
 calcedpassed=Stato
 calcedscore=Punteggio
 certification=Attestato di efficienza
@@ -24,6 +24,7 @@ form.system=visione d'insieme automatica
 manual=Impostare manualmente
 pane.tab.accessibility=Accesso
 pane.tab.deliveryOptions=$org.olat.core.gui.control.generic.iframe\:option.delivery
+pane.tab.highscore=Punteggio
 pane.tab.st_config=Visione d'insieme
 pane.tab.st_scorecalculation=Punteggio
 passed.no=Non superato
diff --git a/src/main/java/org/olat/ims/qti/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/ims/qti/_i18n/LocalStrings_it.properties
index 068ad1caee25608b30ea8d4ca484083fc790b384..308e177b530edc990b85fc8e53519e3ff58d3fe9 100644
--- a/src/main/java/org/olat/ims/qti/_i18n/LocalStrings_it.properties
+++ b/src/main/java/org/olat/ims/qti/_i18n/LocalStrings_it.properties
@@ -1,4 +1,4 @@
-#Tue Feb 07 13:12:04 CET 2017
+#Tue Mar 28 12:02:05 CEST 2017
 DetailedResults=Risultati dettagliati
 ERROR_ASSESSMENT_OUTOFTIME=Il tempo a disposizione per questo test \u00E8 stato superato.
 ERROR_ITEM_OUTOFTIME=Il tempo a disposizione per questa domanda \u00E8 stato superato.
@@ -27,6 +27,7 @@ column.header.assesspoints=Punteggio
 column.header.date=Data
 column.header.details=Dettagli
 column.header.duration=Durata
+convert.qti21.hint=\u00C8 possibile trovare informazioni sulla conversione da QTI 1.2 a QTI 2.0 nel manuale
 date=Data
 days=Giorni
 dur=Durata
diff --git a/src/main/java/org/olat/ims/qti/export/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/ims/qti/export/_i18n/LocalStrings_it.properties
index 62875dd83a733d06f470394ec4c50b83df0f2e95..b4b0809ae19eb4175f91ab6fa84e1b277e9393d0 100644
--- a/src/main/java/org/olat/ims/qti/export/_i18n/LocalStrings_it.properties
+++ b/src/main/java/org/olat/ims/qti/export/_i18n/LocalStrings_it.properties
@@ -1,8 +1,9 @@
-#Mon Feb 13 14:10:47 CET 2017
+#Tue Mar 28 12:02:16 CEST 2017
 action.choose=Archiviare
 archive.all.users=Utenti (Tutti i gruppi di utenti, es. autori, partecipanti ecc.)
 archive.anonymous.users=Utenti anonimi (ospiti)
 archive.noresults=Non \u00E8 ancora stato salvato alcun risultato per questo elemento di corso.
+archive.noresults.short=Nessun risultato per questo elemento di corso
 archive.participants=Partecipanti (corso e gruppi collegati)
 archive.results.successfully=<b>I risultati sono stati salvati nella Sua cartella personale.</b>
 archive.wizard.title=Archivio di test e questionari
diff --git a/src/main/java/org/olat/ims/qti/resultexport/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/ims/qti/resultexport/_i18n/LocalStrings_it.properties
index 93b51da3c118b58bf417e3323b3bc5b48b2a08bc..2a71eea400ae735fc099b093d0ccee5f3bf681ac 100644
--- a/src/main/java/org/olat/ims/qti/resultexport/_i18n/LocalStrings_it.properties
+++ b/src/main/java/org/olat/ims/qti/resultexport/_i18n/LocalStrings_it.properties
@@ -1,9 +1,10 @@
-#Tue Feb 07 13:25:33 CET 2017
+#Tue Mar 28 12:02:20 CEST 2017
 button.export=Risultati dell'esportazione
 button.return=Indietro
 button.show=Mostrare
 detail.results=Risultati dettagliati
 error.no.assessed.users=Nessuna valutazione disponibile
+export.folder.name=Risultati
 table.all.firstname=Nome
 table.all.id=ID
 table.all.lastname=Cognome
diff --git a/src/main/java/org/olat/ims/qti21/resultexport/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/ims/qti21/resultexport/_i18n/LocalStrings_zh_CN.properties
index f25c5a9e19b779ba793296ef113fbc890720403a..a9c1f6f7698b4fd37dd0f40f5d58d6f6564427dc 100644
--- a/src/main/java/org/olat/ims/qti21/resultexport/_i18n/LocalStrings_zh_CN.properties
+++ b/src/main/java/org/olat/ims/qti21/resultexport/_i18n/LocalStrings_zh_CN.properties
@@ -1,4 +1,4 @@
-#Sat Mar 18 16:35:59 CET 2017
+#Tue Mar 28 03:55:26 CEST 2017
 button.export=\u5BFC\u51FA\u7ED3\u679C
 button.return=\u8FD4\u56DE
 button.show=\u663E\u793A
@@ -13,7 +13,10 @@ table.all.tries=\u5C1D\u8BD5
 table.all.username=\u7528\u6237\u540D
 table.grading=\u8BC4\u5206
 table.overview=\u6982\u8FF0
+table.user.attempt=Attempt_
 table.user.date=\u65E5\u671F
 table.user.duration=\u6301\u7EED\u65F6\u95F4
+table.user.email=Email
+table.user.id=ID
 table.user.score=\u5206\u6570
 table.user.trial=\u5C1D\u8BD5
diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_zh_CN.properties
index f34a8c8e8840f9c10d4bc5ff3513c0220141b324..4fbd927bdc1fb7beb332cc0681b46822f58381ae 100644
--- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_zh_CN.properties
+++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_zh_CN.properties
@@ -1,4 +1,4 @@
-#Sun Mar 19 10:47:48 CET 2017
+#Tue Mar 28 13:48:09 CEST 2017
 actualPoints=$org.olat.modules.iq\:actualPoints
 admin.menu.title=QTI 2.1
 admin.menu.title.alt=QTI 2.1 \u8BBE\u7F6E
@@ -57,7 +57,9 @@ confirm.finish.test.text=\u5B8C\u6210/\u786E\u5B9A\u5417\uFF1F\u8FD9\u5C06\u63D0
 confirm.finish.test.title=\u6D4B\u8BD5\u5B8C\u6210
 confirm.finish.testpart.text=\u5B8C\u6210/\u786E\u5B9A\u5417\uFF1F\u8FD9\u5C06\u63D0\u4EA4\u6D4B\u8BD5\u90E8\u5206\u7684\u7B54\u5377\u3002
 confirm.finish.testpart.title=\u6D4B\u8BD5\u90E8\u5206\u5B8C\u6210
+confirm.suspend.test=$org.olat.modules.iq\:confirmSuspend
 confirmation=\u786E\u8BA4
+correct.solution=\u6B63\u786E\u7684\u89E3\u51B3\u65B9\u6848
 correction=\u8BC4\u5206
 debug.outcomes=\u8F93\u51FA\u6570\u636E
 debug.responses=\u54CD\u5E94\u6570\u636E
@@ -68,12 +70,16 @@ digital.signature.certificate.hint=\u8BC1\u4E66\u5FC5\u987B\u4EE5\u79C1\u94A5pfx
 digital.signature.certificate.password=\u8BC1\u4E66\u5BC6\u7801
 digital.signature.download=\u6D4B\u8BD5\u56DE\u6267
 digital.signature.download.link=\u4E0B\u8F7D
+digital.signature.mail.body=\u4F5C\u4E3A\u8FD9\u4E2A\u7535\u5B50\u90AE\u4EF6\u4E2D\u7684\u9644\u4EF6\uFF0C\u60A8\u53EF\u4EE5\u627E\u5230\u4EE5\u4E0B\u5728\u7EBF\u6D4B\u8BD5\u7684\u6570\u5B57\u7B7E\u540D\uFF1A\r\n\u6D4B\u8BD5{ 0 }\uFF08{ 1 }\uFF09\r\n\u65E5\u671F\uFF1A{ 6 }\r\n\u4ED4\u7EC6\u4FDD\u5B58\u6D4B\u8BD5\u7684\u6570\u5B57\u7B7E\u540D\u3002\u5B83\u53EF\u4EE5\u8BC1\u660E\u60A8\u5728\u4E0A\u8FF0\u65F6\u95F4\u5DF2\u7ECF\u5B8C\u6210\u4E86\u8FD9\u4E2A\u6D4B\u8BD5\uFF0C\u5E76\u5305\u542B\u786E\u8BA4\u6240\u4FDD\u5B58\u4FE1\u606F\u771F\u5B9E\u6027\u7684\u4FE1\u606F\u3002
+digital.signature.mail.subject=\u6D4B\u8BD5\u51ED\u636E
 digital.signature.mail.test.option=\u901A\u8FC7\u90AE\u4EF6\u53D1\u9001\u6D4B\u8BD5\u56DE\u6267
 digital.signature.test.option=\u751F\u6210\u6D4B\u8BD5\u56DE\u6267
 digital.signature.text=\u6D4B\u8BD5\u7ED3\u679C\u56DE\u6267
 drawing.brushsize=\u753B\u7B14\u5927\u5C0F
 drawing.opacity=\u4E0D\u900F\u660E\u5EA6
 error.as.directed=\u8BF7\u6309\u6307\u793A\u5B8C\u6210\u6B64\u4EA4\u4E92\u3002
+error.as.directed.kprim=\u8BF7\u6309\u6307\u5BFC\u5B8C\u6210\u672C\u4EA4\u4E92
+error.assessment.item=\u6587\u4EF6\u4E0D\u80FD\u88AB\u7FFB\u8BD1\uFF0C\u53EF\u80FD\u6587\u4EF6\u635F\u574F\u6216\u683C\u5F0F\u9519\u8BEF\u3002
 error.choice=\u60A8\u5FC5\u987B\u81F3\u5C11\u9009\u62E9\u4E00\u4E2A\u4E0B\u9762\u7684\u9009\u9879
 error.digital.certificate.cannotread=\u4E0D\u80FD\u8BFB\u8BC1\u4E66
 error.digital.certificate.noPrivateKey=\u627E\u4E0D\u5230\u79C1\u94A5\uFF0C\u5B83\u662F\u5FC5\u987B\u7684\u3002
@@ -92,19 +98,109 @@ error.required.format=\u60A8\u7684\u8F93\u5165\u4E0D\u662F\u8981\u6C42\u7684\u68
 error.textEntry.invalid=\u60A8\u7684\u8F93\u5165\u662F\u65E0\u6548\u7684
 error.textEntry.invalid.float=\u60A8\u5FC5\u987B\u8F93\u5165\u4E00\u4E2A\u6570\u503C
 error.textEntry.invalid.record=\u60A8\u7684\u8F93\u5165\u5FC5\u987B\u662F\u4E00\u4E2A\u6709\u6548\u7684\u6570\u503C\u3002
+exploded.msg=\u5D29\u6E83
+form.metadata.title=\u6807\u9898
+graphic.gap.explanation=\u5C06\u4E0B\u56FE\u653E\u5728\u4E0A\u56FE\u4E2D\u7684\u4F4D\u7F6E\uFF0C\u6700\u597D\u63CF\u8FF0\u6B63\u786E\u7684\u7B54\u6848\u3002
+head.assessment.details=$org.olat.ims.qti\:head.ass.details
+head.assessment.overview=$org.olat.ims.qti\:head.ass.details
+interaction.order.drag.msg=\u4ECE\u8FD9\u91CC\u62D6\u52A8\u672A\u4F7F\u7528\u7684\u9879
+interaction.order.drop.msg=\u5728\u8FD9\u91CC\u653E\u7F6E\u9884\u5B9A\u60A8\u9009\u62E9\u7684\u9879
 interaction.order.source=\u6E90
 interaction.order.target=\u76EE\u6807
+kprim.minus=False
+kprim.plus=True
+math.extension=qtiworks\u6570\u5B66\u6269\u5C55
+math.extension.text=\u9700\u8981\u5728\u670D\u52A1\u5668\u5B89\u88C5Maxima
 menu.reset.title=\u91CD\u7F6E\u6D4B\u8BD5\u6570\u636E
+menu.retrieve.tests.title=qtiworks\u6570\u5B66\u6269\u5C55
 paint.erase=\u60A8\u60F3\u64E6\u6389\u60A8\u6240\u753B\u7684\u5417\uFF1F
 paint.erase.hint=\u4F60\u60F3\u64E6\u6389\u4F60\u7684\u753B\u5417\uFF1F
+passed.no=$org.olat.course.nodes.iq\:passed.no
+passed.yes=$org.olat.course.nodes.iq\:passed.yes
+passed.yourpassed=$org.olat.course.nodes.iq\:passed.yourpassed
+pull=\u62C9
+qti.form.allow.anonym=$org.olat.course.nodes.iq\:qti.form.allow.anonym
 qti.form.allow.anonym.hint=\u533F\u540D\u7528\u6237\u6216\u5BA2\u4EBA\u53EF\u4EE5\u505A\u6D4B\u8BD5\u3002\u8BE5\u6D4B\u8BD5\u53EF\u4EE5\u4E0D\u7528\u589E\u52A0\u5230\u8BFE\u7A0B\uFF0C\u4F5C\u4E3A\u5B66\u4E60\u8D44\u6E90\u4F7F\u7528\u3002
+qti.form.attempts=$org.olat.course.nodes.iq\:qti.form.attempts
+qti.form.auto.memofield=$org.olat.course.nodes.iq\:qti.form.auto.memofield
 qti.form.auto.memofield.hint=\u6D4B\u8BD5\u8005\u53EF\u4EE5\u8BB0\u7B14\u8BB0\uFF0C\u9700\u8981\u5728\u201C\u5141\u8BB8\u8BC4\u8BBA\u201D\u8BBE\u7F6E
+qti.form.block.afterSuccess=$org.olat.course.nodes.iq\:qti.form.block.afterSuccess
+qti.form.enablecancel=$org.olat.course.nodes.iq\:qti.form.enablecancel
+qti.form.enablesuspend=$org.olat.course.nodes.iq\:qti.form.enablesuspend
 qti.form.hide.lms=$org.olat.course.nodes.iq\:qti.form.fullwindow
+qti.form.limit.attempts=$org.olat.course.nodes.iq\:qti.form.limit.attempts
+qti.form.menudisplay=$org.olat.course.nodes.iq\:qti.form.menudisplay
+qti.form.questionprogress=$org.olat.course.nodes.iq\:qti.form.questionprogress
+qti.form.questiontitle=$org.olat.course.nodes.iq\:qti.form.questiontitle
+qti.form.results.onfinish=$org.olat.course.nodes.iq\:qti.form.results.onfinish
+qti.form.scoreprogress=$org.olat.course.nodes.iq\:qti.form.scoreprogress
 qti.form.setting.choose=\u9009\u62E9\u914D\u7F6E\u6587\u4EF6\u2026
 qti.form.setting.formative=\u8FC7\u7A0B\u6D4B\u8BD5
 qti.form.setting.summative=\u7EC8\u7ED3\u6D4B\u8BD5
+qti.form.summary=$org.olat.course.nodes.iq\:qti.form.summary
 qti.form.summary.help=$org.olat.course.nodes.iq\:qti.form.summary.help
+qti.form.summary.metadata=$org.olat.course.nodes.iq\:qti.form.summary.metadata
+qti.form.summary.questions=$org.olat.course.nodes.iq\:qti.form.summary.questions
+qti.form.summary.questions.metadata=$org.olat.course.nodes.iq\:qti.form.summary.questions.metadata
+qti.form.summary.responses=$org.olat.course.nodes.iq\:qti.form.summary.responses
+qti.form.summary.sections=$org.olat.course.nodes.iq\:qti.form.summary.sections
+qti.form.summary.solutions=$org.olat.course.nodes.iq\:qti.form.summary.solutions
 question=\u95EE\u9898
 question.progress.answered=\u5DF2\u7B54
+question.progress.noMaxScore=$org.olat.modules.iq\:noMaxScore
+question.progress.score=$org.olat.modules.iq\:actualPoints
 reset.data=\u91CD\u7F6E\u6570\u636E
 reset.test.data.acknowledge=\u6211\u660E\u767D\u6570\u636E\u5C06\u4F1A\u88AB\u5220\u9664\u3002
+reset.test.data.text=\u60A8\u786E\u8BA4\u8981\u91CD\u7F6E\u6D4B\u8BD5\u7684\u8BC4\u4F30\u6570\u636E\u5417\uFF1F<strong>{0} \u4E2A\u7528\u6237</strong>\u7684\u6210\u7EE9\u5C06\u88AB\u5220\u9664\u3002
+reset.test.data.text.ref=\u60A8\u4E0D\u80FD\u5220\u9664\u672C\u6D4B\u9A8C\u7684\u6240\u6709\u6570\u636E\uFF0C\u56E0\u4E3A\u8D44\u6E90\u201D{0}\u201C\u5F15\u7528\u4E86\u672C\u6D4B\u9A8C\u3002
+reset.test.data.title=\u91CD\u7F6E\u6D4B\u9A8C\u6570\u636E
+response=\u54CD\u5E94
+results.duration=\u6301\u7EED\u65F6\u95F4
+results.empty=\u6CA1\u6709\u627E\u5230\u53EF\u663E\u793A\u7684\u6210\u7EE9
+results.end.time=\u7ED3\u675F\u65E5\u671F
+results.entry.time=\u5F00\u59CB\u65E5\u671F
+results.score.yourscore=$org.olat.course.nodes.iq\:score.yourscore
+results.session.status=\u72B6\u6001
+results.session.status.final=\u5DF2\u89E3\u7B54
+results.session.status.initial=\u672A\u5F00\u59CB
+results.session.status.pendingResponseProcessing=$\:results.session.status.pendingSubmission
+results.session.status.pendingSubmission=\u5DF2\u9605\u8BFB\u672A\u89E3\u7B54
+results.summary.title=$org.olat.course.nodes\:personal.title
+retrievetest.confirm.text=$org.olat.ims.qti\:retrievetest.confirm.text
+retrievetest.confirm.text.plural=$org.olat.ims.qti.statistics.ui\:retrievetest.confirm.text.plural
+retrievetest.confirm.title=$org.olat.ims.qti.statistics.ui\:retrievetest.confirm.title
+retrievetest.nothing.todo=$org.olat.ims.qti.statistics.ui\:retrievetest.nothing.todo
+review.responses=\u56DE\u987E\u60A8\u7684\u7B54\u6848
+review.responses.desc=\u60A8\u53EF\u4EE5\u56DE\u987E\u60A8\u7684\u7B54\u6848\uFF0C\u4E0B\u9762\u5217\u51FA\u4E86\u60A8\u53EF\u4EE5\u56DE\u987E\u7684\u7B54\u6848\u3002
+score.max=$org.olat.ims.qti\:score.max
+serialize.error=\u4FDD\u5B58\u6587\u4EF6\u65F6\u53D1\u751F\u4E86\u4E00\u4E2A\u672A\u6599\u9519\u8BEF
+settings.choose.descr=\u60A8\u53EF\u4EE5\u4E3A\u603B\u7ED3\u6027\u6216\u5F62\u6210\u6027\u6D4B\u8BD5\u9009\u62E9\u4E00\u4E2A\u9ED8\u8BA4\u8BBE\u7F6E\uFF0C\u4F7F\u5F97\u6D4B\u8BD5\u4EE5\u540E\u90FD\u4F7F\u7528\u8FD9\u4E2A\u8BBE\u7F6E\u6216\u8005\u4F60\u81EA\u5DF1\u4E5F\u53EF\u4EE5\u8FDB\u884C\u8BBE\u7F6E\u3002
+settings.choose.profile=\u662F\u914D\u7F6E\u751F\u6548
+settings.profile=\u6807\u51C6\u914D\u7F6E
+solution=\u89E3\u51B3\u65B9\u6848
+submit=\u63D0\u4EA4\u7B54\u5377
+suspend.test=$org.olat.modules.iq\:suspendAssess
+tab.options=\u9009\u9879
+tab.reset.data=\u91CD\u7F6E\u6570\u636E
+table.header.action=\u52A8\u4F5C
+table.header.duration=\u6301\u7EED\u65F6\u95F4
+table.header.lastModified=\u65E5\u671F
+table.header.results=\u5206\u6570
+terminated.msg=\u6D4B\u9A8C\u5DF2\u5B8C\u6210
+test.complete=\u6D4B\u9A8C\u5B8C\u6210
+test.entry.page.text=\u672C\u6D4B\u9A8C\u7531\u81F3\u591A{0}\u4E2A\u90E8\u5206\u7EC4\u6210
+test.entry.page.title=\u5F00\u59CB\u6D4B\u9A8C
+test.part.complete=\u6D4B\u9A8C\u90E8\u5206\u5B8C\u6210
+timelimit.1.minute=\u672C\u6D4B\u9A8C\u8FD8\u5269\u4E0D\u52301\u5206\u949F\uFF0C\u8BF7\u63D0\u4EA4\u7B54\u6848\uFF0C\u5426\u5219\uFF0C\u4E0D\u80FD\u4FDD\u5B58\u7B54\u5377\u3002
+timelimit.10.minutes=\u672C\u6D4B\u9A8C\u8FD8\u5269\u4E0D\u523010\u5206\u949F
+timelimit.5.minutes=\u672C\u6D4B\u9A8C\u8FD8\u5269\u4E0D\u52305\u5206\u949F
+timelimit.finished=\u6D4B\u9A8C\u7ED3\u675F\u65F6\u95F4\u5DF2\u5230\u3002
+timelimit.running=\u6D4B\u9A8C\u65F6\u95F4\u9650\u5236\uFF1A{1}\uFF08\u5728{2}\u7ED3\u675F\uFF09{0}
+unsupported.custom.interaction=\u4E0D\u652F\u6301\u7684\u81EA\u5B9A\u4E49\u4EA4\u4E92
+upload.explanation=\u4ECE\u60A8\u7684\u7535\u8111\u9009\u62E9\u6587\u4EF6\u4E0A\u4F20
+validate.xml.signature=\u9A8C\u8BC1\u6D4B\u9A8C\u51ED\u636E
+validate.xml.signature.file=XML\u6587\u4EF6
+validate.xml.signature.ok=\u6210\u529F\u9A8C\u8BC1\u6D4B\u9A8C\u51ED\u636E\u548C\u6210\u7EE9
+warning.reset.test.data.nobody=\u6CA1\u6709\u4EFB\u4F55\u53C2\u5165\u8005\u7684\u6570\u636E\u53EF\u4EE5\u88AB\u91CD\u7F6E\u3002
+warning.xml.signature.notok=\u7B7E\u540D\u548C\u6210\u7EE9\u4E0D\u80FD\u4E92\u76F8\u9A8C\u8BC1
+warning.xml.signature.session.not.found=\u627E\u4E0D\u5230\u6D4B\u9A8C\u6210\u7EE9
diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000000000000000000000000000000000000..b4b063aa8e51aec52e1b298a5814a169fd7e46c1
--- /dev/null
+++ b/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_zh_CN.properties
@@ -0,0 +1,22 @@
+#Tue Mar 28 05:31:11 CEST 2017
+assessed.identity=\u5DF2\u8BC4\u4F30\u7684\u7528\u6237
+comment=\u8BC4\u8BBA
+correction=\u66F4\u6B63
+correction.min.max.score=\u5206\u6570\u5728{0}\u548C{1}\u4E4B\u95F4
+correction.test.title=\u8BC4\u5206
+grade.no.items=\u8FD9\u4E2A\u95EE\u9898\u6CA1\u6709\u8981\u66F4\u6B63\u7684\u6210\u7EE9\u3002
+grade.nobody=\u6CA1\u6709\u8981\u66F4\u6B63\u7684\u6210\u7EE9\u3002
+next.item=\u4E0B\u4E00\u4E2A\u95EE\u9898
+not.responded=\u6CA1\u6709\u89E3\u7B54\u8FD9\u4E2A\u95EE\u9898
+overview.tests=\u6D4F\u89C8\u5E76\u5173\u95ED
+previous.item=\u524D\u4E00\u4E2A\u95EE\u9898
+save.next=\u4FDD\u5B58\u540E\u5230\u4E0B\u4E00\u4E2A\u95EE\u9898
+save.tests=\u4FDD\u5B58\u6210\u7EE9\uFF0C\u7ED3\u675F
+score=\u5206\u6570
+table.header.corrected=\u66F4\u6B63
+table.header.finalScore=\u6700\u7EC8\u5206\u6570
+table.header.itemSessions=\#\u95EE\u9898
+table.header.manualScore=\u624B\u52A8\u5206\u6570
+table.header.responded=\u5DF2\u89E3\u7B54
+table.header.score=\u5206\u6570
+table.header.username=\u7528\u6237\u540D\u79F0
diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_zh_CN.properties
index e95c8308d5eb82a3fb1ec75d446ccd7cb4d31aed..077ded23ec24eeb3e5e06df07cc35cace076ea58 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_zh_CN.properties
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_zh_CN.properties
@@ -1,16 +1,22 @@
-#Sun Mar 19 11:07:59 CET 2017
+#Tue Mar 28 14:13:21 CEST 2017
 add.match.column=\u589E\u52A0\u5217
 add.match.row=\u589E\u52A0\u884C
 answers=\u7B54\u6848
 change.elements=\u7248\u672C
 correct.answers=\u6B63\u786E
+cut.value=\u53CA\u683C\u5206\u6570
+delete.item=$org.olat.ims.qti.editor\:delete.item
+delete.section=$org.olat.ims.qti.editor\:delete.section
 delete.testPart=\u60A8\u771F\u7684\u8981\u5220\u9664\u6D4B\u8BD5\u90E8\u5206\u53CA\u6240\u6709\u95EE\u9898\u5417\uFF1F
 editor.sc.title=\u5355\u4E2A\u9009\u62E9
 editor.unkown.title=\u672A\u77E5\u4EA4\u4E92
+error.cannot.create.section=\u4EFB\u4F55\u5730\u65B9\u90FD\u4E0D\u80FD\u521B\u5EFA\u8282
 error.cannot.delete=\u60A8\u4E0D\u80FD\u5220\u9664\u8FD9\u4E2A\u5BF9\u8C61
+error.double=$org.olat.ims.qti21.ui\:error.double
 error.import.question=\u5728\u5BFC\u5165\u95EE\u9898\u65F6\u51FA\u73B0\u4E86\u4E00\u4E2A\u672A\u6599\u9519\u8BEF
 error.lock=\u7528\u6237{ 0 }\u6B63\u5728\u7F16\u8F91\u6B64\u6D4B\u8BD5/\u95EE\u5377\uFF0C\u5B83\u88AB\u9501\u5B9A\u4E86\u3002
 error.lock.title=\u6D4B\u8BD5\u88AB\u9501\u5B9A
+error.mimetype=$org.olat.core.commons.modules.bc\:WrongMimeType
 error.need.correct.answer=\u60A8\u5FC5\u987B\u6709\u81F3\u5C11\u4E00\u4E2A\u6B63\u786E\u7B54\u6848
 error.positive.double=\u53EA\u5141\u8BB8\u6B63\u6570\uFF0C\u4F8B\u5982\uFF1A15.0\uFF0C5\uFF0C5\uFF0C10
 error.singlechoice=\u9009\u62E9\u4E00\u4E2A
@@ -18,3 +24,136 @@ essay.expectedLength=\u5B57\u7B26\u6570
 essay.max.strings=\u6700\u5927\u5B57\u7B26\u6570
 essay.min.strings=\u6700\u5C0F\u5B57\u7B26\u6570
 essay.rows=\u9AD8\u5EA6\uFF08\u884C\u6570\uFF09
+export.qpool.successful=$org.olat.ims.qti.editor\:export.qpool.successful
+fib.alternative=\u5907\u9009
+fib.alternative.help=\u7528\u9017\u53F7\u5206\u9694\u4E0D\u540C\u7684\u5907\u9009
+fib.caseSensitive=\u533A\u5206\u5927\u5C0F\u5199
+fib.expectedLength=\u95F4\u9694\u5927\u5C0F
+fib.placeholder=\u5360\u4F4D\u7B26
+fib.solution=\u89E3\u51B3\u65B9\u6848
+fib.tolerance.low=\u4E0B\u9650
+fib.tolerance.mode=\u5BB9\u5DEE\u6A21\u5F0F
+fib.tolerance.mode.absolute=\u7EDD\u5BF9
+fib.tolerance.mode.absolute.example=\u6570\u503C\uFF0C\u4F8B\u59821.5\u62161322
+fib.tolerance.mode.exact=\u7CBE\u786E
+fib.tolerance.mode.relative=\u76F8\u5BF9
+fib.tolerance.mode.relative.example=\u767E\u5206\u6570\uFF0C\u4F8B\u598215\u621699.0
+fib.tolerance.up=\u4E0A\u9650
+file=\u6587\u4EF6
+form.choice=\u9009\u62E9
+form.drawing=\u56FE\u753B
+form.essay=\u5C0F\u8BBA\u6587
+form.feedback=\u53CD\u9988
+form.fib=\u7A7A\u767D\u6587\u672C
+form.hotspot=\u70ED\u70B9
+form.imd.alignment=\u590D\u9009\u6846\u5BF9\u9F50
+form.imd.alignment.left=\u5DE6
+form.imd.alignment.right=\u53F3
+form.imd.answer=\u7B54\u6848
+form.imd.answered.text=\u53CD\u9988\u7684\u7B54\u6848
+form.imd.answered.title=\u6807\u9898
+form.imd.background=\u80CC\u666F
+form.imd.correct.kprim=True
+form.imd.correct.solution.text=\u6B63\u786E\u7B54\u6848
+form.imd.correct.solution.text.word=$\:form.imd.correct.solution.text (only for Word export)
+form.imd.correct.solution.title=\u8868\u5934
+form.imd.correct.spots=Correct spots
+form.imd.correct.text=\u5BF9\u6240\u6709\u6B63\u786E\u7B54\u6848\u7684\u53CD\u9988
+form.imd.correct.title=\u6807\u9898
+form.imd.descr=\u95EE\u9898
+form.imd.empty.text=\u53CD\u9988\u4E3A\u7A7A
+form.imd.empty.title=\u7A7A\u6807\u9898
+form.imd.hint.text=\u63D0\u793A
+form.imd.hint.title=\u6807\u9898
+form.imd.incorrect.text=\u7B54\u6848\u9519\u8BEF
+form.imd.incorrect.title=\u6807\u9898
+form.imd.layout=$org.olat.ims.qti.editor\:form.imd.layout
+form.imd.layout.horizontal=$org.olat.ims.qti.editor\:form.imd.layout.horizontal
+form.imd.layout.vertical=$org.olat.ims.qti.editor\:form.imd.layout.vertical
+form.imd.limittries=$org.olat.ims.qti.editor\:form.imd.limittries
+form.imd.match.multiple.choice=\u591A\u9009\u9898
+form.imd.match.single.choice=\u5355\u9009\u9898
+form.imd.match.single.multiple=\u7C7B\u578B
+form.imd.mimetype=\u671F\u671B\u7684mime\u7C7B\u578B
+form.imd.rubric=\u63CF\u8FF0
+form.imd.shuffle=Shuffle answers
+form.imd.title=\u6807\u9898
+form.imd.wrong.kprim=False
+form.kprim=Kprim
+form.match=\u914D\u5BF9
+form.metadata=\u5143\u6570\u636E
+form.metadata.description=\u63CF\u8FF0
+form.metadata.title=\u6807\u9898
+form.score=\u5206\u6570
+form.score.answer.correct=\u6B63\u786E
+form.score.answer.points=\u5F97\u5206
+form.score.answer.summary=Answer summary
+form.score.assessment.all.correct=\u6240\u6709\u6B63\u786E\u7B54\u6848
+form.score.assessment.mode=\u8BC4\u4F30\u65B9\u6CD5
+form.score.assessment.per.answer=\u6BCF\u4E2A\u7B54\u6848\u5206\u6570
+form.section.selection_all=$org.olat.ims.qti.editor\:form.section.selection_all
+form.section.selection_pre=\u672C\u8282\u7684\u95EE\u9898\u6570
+form.section.selection_pre.hover=\u9009\u62E9\u662F\u6D4B\u9A8C\u4E2D\u662F\u663E\u793A\u6240\u6709\u95EE\u9898\u8FD8\u662F\u6307\u5B9A\u6570\u91CF\u7684\u95EE\u9898
+form.section.shuffle=\u95EE\u9898\u968F\u673A\u6392\u5E8F\u5417\uFF1F
+form.section.visible=\u5728\u6D4B\u9A8C\u4E2D\u663E\u793A\u8282\u7684\u6807\u9898
+form.test.correct.text=\u6240\u6709\u6B63\u786E\u7B54\u6848\u7684\u53CD\u9988
+form.test.correct.title=\u6807\u9898
+form.test.incorrect.text=\u9519\u8BEF\u7B54\u6848\u7684\u53CD\u9988
+form.test.incorrect.title=\u6807\u9898
+form.testPart.navigationMode=\u5BFC\u822A\u6A21\u5F0F
+form.testPart.navigationMode.hint=\u7EBF\u6027\uFF1A\u5FC5\u987B\u6309\u7ED9\u5B9A\u7684\u987A\u5E8F\u89E3\u7B54\u95EE\u9898\u3002\u975E\u7EBF\u6027\uFF1A\u53EF\u4EE5\u9009\u62E9\u89E3\u7B54\u95EE\u9898\u7684\u987A\u5E8F\u3002
+form.testPart.navigationMode.linear=\u7EBF\u6027
+form.testPart.navigationMode.nonlinear=\u975E\u7EBF\u6027
+form.unkown=\u672A\u77E5
+form.upload=\u6587\u4EF6\u4E0A\u4F20
+hour.short=h
+inherit=\u7EE7\u627F
+item.session.control.allow.comment=\u5141\u8BB8\u8BC4\u8BBA
+item.session.control.allow.comment.hint=\u6D4B\u9A8C\u53C2\u5165\u8005\u53EF\u4EE5\u8BB0\u4E2A\u4EBA\u7B14\u8BB0\u3002\u672C\u529F\u80FD\u9700\u8981\u5728\u201C\u9009\u9879\u201D\u4E0B\u542F\u7528\u3002
+item.session.control.allow.review=\u5141\u8BB8\u56DE\u770B\u95EE\u9898
+item.session.control.allow.review.hint=\u5728\u5B8C\u6210\u6D4B\u9A8C\u540E\uFF0C\u53EF\u4EE5\u56DE\u770B\u95EE\u9898
+item.session.control.allow.skipping=\u5141\u8BB8\u8DF3\u8FC7\u95EE\u9898
+item.session.control.allow.skipping.hint=\u5728\u6240\u6709\u95EE\u9898\u90FD\u88AB\u89E3\u7B54\u524D\u7ED3\u675F\u6D4B\u9A8C\u3002
+item.session.control.attempts=\u5C1D\u8BD5\u6B21\u6570
+item.session.control.attempts.hint=\u8FD9\u4E2A\u5C1D\u8BD5\u6B21\u6570\u9650\u5236\u53EA\u5BF9\u90E8\u5206\u6D4B\u9A8C\u6709\u6548\uFF0C\u6574\u4E2A\u6D4B\u9A8C\u7684\u5C1D\u8BD5\u6B21\u6570\u9650\u5236\u5728\u201C\u9009\u9879\u201D\u4E0B\u8BBE\u7F6E\u3002
+item.session.control.show.solution=\u663E\u793A\u7B54\u6848
+item.session.control.show.solution.hint=\u7B54\u6848\u4E5F\u5728\u6821\u5BF9\u65F6\u663E\u793A
+max.score=\u6700\u9AD8\u5206\u6570
+min.score=\u6700\u4F4E\u5206\u6570
+minute.short=m
+new.answer=\u65B0\u7B54\u6848
+new.circle=\u5706
+new.drawing=\u753B\u56FE
+new.elements=\u589E\u52A0\u5143\u7D20
+new.essay=\u5C0F\u8BBA\u6587
+new.fib=\u7A7A\u683C\u6587\u672C
+new.fib.numerical=\u6570\u503C\u8F93\u5165
+new.hotspot=Hotspot
+new.kprim=Kprim
+new.match=\u914D\u5BF9
+new.mc=\u591A\u9009\u9898
+new.rectangle=\u77E9\u5F62
+new.sc=\u5355\u9009\u9898
+new.section=\u8282
+new.spots=\u589E\u52A0\u70ED\u70B9
+new.testpart=\u6D4B\u8BD5\u90E8\u5206
+new.upload=\u4E0A\u4F20\u6587\u4EF6
+preview=\u9884\u89C8
+preview.solution=\u9884\u89C8\u7B54\u6848
+time.limit.max=\u65F6\u95F4\u9650\u5236
+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=\u91CD\u65B0\u52A0\u8F7D\u6587\u4EF6\uFF0C\u5237\u65B0\u7F13\u5B58
+tools.reload.from.files.tooltip=\u53EA\u6709\u7BA1\u7406\u5458\u53EF\u89C1
+warning.alien.assessment.item=OpenOLAT\u7F16\u8F91\u5668\u4E0D\u80FD\u5904\u7406\u8FD9\u79CD\u7C7B\u578B\u7684\u95EE\u9898
+warning.alien.assessment.test=OpenOLAT\u7F16\u8F91\u5668\u4E0D\u80FD\u5904\u7406\u8FD9\u4E2A\u6D4B\u9A8C\u3002
+warning.atleastonesection=\u672C\u8282\u4E0D\u80FD\u88AB\u5220\u9664\uFF0C\u6D4B\u9A8C\u6216\u6D4B\u9A8C\u90E8\u5206\u5FC5\u987B\u81F3\u5C11\u5305\u542B\u4E00\u4E2A\u8282\u3002
+warning.feedback.cutvalue=\u53CD\u9988\u662F\u57FA\u4E8E\u5206\u6570\u7EBF\u7684\uFF0C\u5FC5\u987B\u9996\u5148\u5B9A\u4E49\u5206\u6570\u7EBF\u3002
+warning.in.use=\u8D44\u6E90\u5DF2\u7528\u4E8E\u8BC4\u4F30\uFF0C\u9650\u5236\u7F16\u8F91\u3002
+warning.item.session.control.attempts=\u8FD9\u4E2A\u9650\u5236\u5BF9\u6BCF\u4E2A\u95EE\u9898\u7684\u5C1D\u8BD5\u6B21\u6570\u6709\u5F71\u54CD\u3002.<br/>\u8BF7\u518D\u68C0\u67E5\u95EE\u9898\u7684\u8BBE\u7F6E\u3002
diff --git a/src/main/java/org/olat/ims/qti21/ui/statistics/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/ims/qti21/ui/statistics/_i18n/LocalStrings_zh_CN.properties
new file mode 100644
index 0000000000000000000000000000000000000000..ec88732671caa559a98f42ad2d6d0c686c32ea60
--- /dev/null
+++ b/src/main/java/org/olat/ims/qti21/ui/statistics/_i18n/LocalStrings_zh_CN.properties
@@ -0,0 +1,21 @@
+#Tue Mar 28 14:16:30 CEST 2017
+answer.correct=$org.olat.ims.qti.statistics.ui\:answer.correct
+answer.false=$org.olat.ims.qti.statistics.ui\:answer.false
+answer.noanswer=$org.olat.ims.qti.statistics.ui\:answer.noanswer
+answer.points=$org.olat.ims.qti.statistics.ui\:answer.points
+chart.cutscore=$org.olat.ims.qti.statistics.ui\:chart.cutscore
+chart.duration.histogramm=$org.olat.ims.qti.statistics.ui\:chart.duration.histogramm
+chart.duration.histogramm.legend=$org.olat.ims.qti.statistics.ui\:chart.duration.histogramm.legend
+chart.item=$org.olat.ims.qti.statistics.ui\:chart.item
+chart.maxscore=$org.olat.ims.qti.statistics.ui\:chart.maxscore
+chart.percent.participants=$org.olat.ims.qti.statistics.ui\:chart.percent.participants
+chart.percent.participants.num=$org.olat.ims.qti.statistics.ui\:chart.percent.participants.num
+chart.points=$org.olat.ims.qti.statistics.ui\:chart.points
+chart.responses=$org.olat.ims.qti.statistics.ui\:chart.responses
+chart.score.histogramm=$org.olat.ims.qti.statistics.ui\:chart.score.histogramm
+download.raw.data=$org.olat.ims.qti.statistics.ui\:download.raw.data
+fib.wrong.answer=$org.olat.ims.qti.statistics.ui\:fib.wrong.answer
+fig.averagedur=$org.olat.ims.qti.statistics.ui\:fig.averagedur
+fig.averagescore=$org.olat.ims.qti.statistics.ui\:fig.averagescore
+fig.avg=$org.olat.ims.qti.statistics.ui\:fig.avg
+fig.correctanswers=$org.olat.ims.qti.statistics.ui\:fig.correctanswers
diff --git a/src/main/java/org/olat/modules/assessment/ui/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/modules/assessment/ui/_i18n/LocalStrings_zh_CN.properties
index 4b57aa0aba02c9a011fd33aeecb3de323f6ff7f3..b372f989b247561740cd505b6dc8fd48acbd8ccf 100644
--- a/src/main/java/org/olat/modules/assessment/ui/_i18n/LocalStrings_zh_CN.properties
+++ b/src/main/java/org/olat/modules/assessment/ui/_i18n/LocalStrings_zh_CN.properties
@@ -1,5 +1,22 @@
-#Sun Oct 09 04:11:50 CEST 2016
+#Mon Mar 27 15:33:21 CEST 2017
 assessment.status.done=\u8BC4\u4F30
 assessment.status.inProgress=\u5F00\u59CB
 assessment.status.inReview=\u56DE\u987E
 assessment.status.notStart=\u672A\u5F00\u59CB
+assessment.tool.numOfAssessedGroups={0} \u4E2A\u7FA4\u7EC4
+assessment.tool.numOfAssessedIdentities={0} \u7528\u6237
+assessment.tool.numOfFailed={0} \u4E2A\u5931\u8D25\u7528\u6237
+assessment.tool.numOfPassed={0}\u4E2A\u901A\u8FC7\u7528\u6237
+assessment.tool.overview=\u6982\u89C8
+assessment.tool.quick.links=\u5FEB\u901F\u94FE\u63A5
+command.next=\u8F6C\u5230\u4E0B\u4E2A\u7528\u6237
+command.previous=\u8F6C\u5230\u524D\u4E00\u4E2A\u7528\u6237
+filter=\u8FC7\u6EE4
+filter.anonymousUsers=\u533F\u540D\u7528\u6237
+filter.done=\u5DF2\u8BC4\u4F30
+filter.failed=\u672A\u901A\u8FC7
+filter.groups=\u7FA4\u7EC4
+filter.inProgress=\u5DF2\u5F00\u59CB
+filter.inReview=\u56DE\u987E
+filter.otherUsers=\u6240\u6709\u7528\u6237\uFF08\u5305\u62EC\u6240\u6709\u4EBA\u548C\u6559\u5E08\uFF09
+filter.passed=\u901A\u8FC7
diff --git a/src/main/java/org/olat/modules/coach/ui/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/modules/coach/ui/_i18n/LocalStrings_zh_CN.properties
index 13c3bf67cae4adfc61528f15a382bc3902be3c93..8f9bca85723cbaecddfba3ed1de3e270cf395ecd 100644
--- a/src/main/java/org/olat/modules/coach/ui/_i18n/LocalStrings_zh_CN.properties
+++ b/src/main/java/org/olat/modules/coach/ui/_i18n/LocalStrings_zh_CN.properties
@@ -1,4 +1,4 @@
-#Thu Sep 29 08:58:08 CEST 2016
+#Tue Mar 28 09:44:32 CEST 2017
 coaching.enabled=\u542F\u7528\u8BB2\u8BFE
 coaching.on=\u6253\u5F00
 coaching.title=\u8BB2\u8BFE\u540D\u79F0
@@ -33,6 +33,7 @@ previous=\u4E4B\u524D\u7684
 previous.course=$\:previous\uFF08\u4E4B\u524D\u7684\uFF09
 previous.group=$\:previous
 previous.student=$\:previous
+results=\u6210\u7EE9
 search=\u641C\u7D22
 search.form.login=\u7528\u6237\u540D\u79F0
 search.menu.title=\u7528\u6237\u641C\u7D22
diff --git a/src/main/java/org/olat/modules/fo/export/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/modules/fo/export/_i18n/LocalStrings_it.properties
index 4ab1b098617b4fb0f02af39df64db3d576fb1510..146272e1fa386dc7af6a3289a1286f96d47c1a40 100644
--- a/src/main/java/org/olat/modules/fo/export/_i18n/LocalStrings_it.properties
+++ b/src/main/java/org/olat/modules/fo/export/_i18n/LocalStrings_it.properties
@@ -1,4 +1,4 @@
-#Mon Mar 20 14:30:16 CET 2017
+#Tue Mar 28 12:01:33 CEST 2017
 forum.comment=Commento
 forum.forum=Forum
 forum.select=Selezionare
@@ -19,3 +19,7 @@ thread.already.exits=Il thread selezionato \u00E8 gi\u00E0 esistente nella desti
 thread.moved.success=Il thread "{0}" \u00E8 stato spostato nel Forum "{1}" del corso "{2}" con successo.
 thread.moved.summary=Riepilogo
 thread.moving.info=Il thread "{0}" verr\u00E0 spostato nel Forum "{1}" del corso "{2}".
+thread.not.selected=Selezionare un thread esistente o crearne uno.
+title.wizard.movethread=Spostare thread "{0}"
+wizard.mail.body=*** Questo \u00E8 un messaggio generato automaticamente. Non rispondere a questo messaggio *** \r\n\r\nIl  forum-{0} "{1}" del corso "{2}" \u00E8 stato spostato in\: \r\n\r\nCorso\: "{3}"\r\nForum\: "{4}"\r\nThread\: "{5}"\r\n\r\nQuesta azione \u00E8 stata svolta da {6} ({7}). Stai ricevendo questo messaggio poich\u00E9 sei autore di forum-{0}s o di una risposta che \u00E8 stata spostata insieme ad esso.
+wizard.mail.subject=Spostamento di {0} "{1}"
diff --git a/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java b/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java
index 846445fd0ccc2c1b6fb084c54bd9daadfeb448bb..694ee888bb3489b39211e029b18b0915d2f21328 100755
--- a/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java
+++ b/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java
@@ -187,8 +187,13 @@ public class EPFrontendManager implements UserDataDeletable, DeletableGroupData
 		final Property mapKeyProperty = npm.findProperty(null, null, CollaborationTools.PROP_CAT_BG_COLLABTOOLS, CollaborationTools.KEY_PORTFOLIO);
 		if (mapKeyProperty != null) {
 			final Long mapKey = mapKeyProperty.getLongValue();
-			final PortfolioStructure map = loadPortfolioStructureByKey(mapKey);
-			deletePortfolioStructure(map);
+			final String version = mapKeyProperty.getStringValue();
+			if(!"2".equals(version)) {
+				final PortfolioStructure map = loadPortfolioStructureByKey(mapKey);
+				if(map != null) {
+					deletePortfolioStructure(map);
+				}
+			}
 			return true;
 		}
 		return false;
diff --git a/src/main/java/org/olat/repository/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/repository/_i18n/LocalStrings_it.properties
index 6bb7c41f8b0771027c5783aa110f5a7e9987df05..9f67b506826fa49a28d96fca6f22329296d48256 100644
--- a/src/main/java/org/olat/repository/_i18n/LocalStrings_it.properties
+++ b/src/main/java/org/olat/repository/_i18n/LocalStrings_it.properties
@@ -1,4 +1,4 @@
-#Thu Feb 09 09:15:30 CET 2017
+#Tue Mar 28 11:58:01 CEST 2017
 BinderTemplate=Portfolio 2.0 modello
 CourseModule=Corso
 EPStructuredMapTemplate=Modello di portfolio
@@ -314,6 +314,7 @@ index.header=Risorse didattiche
 index.header.alt=Cerchi tra le risorse didattiche.
 info.could.not.delete.entry=L'entrata non \u00E8 stata eliminata.
 info.entry.deleted=L'entrata \u00E8 stata eliminata.
+info.entry.read.only=Elemento terminato con successo.
 info.header=<i class\='o_icon o_icon-lg o_icon_info_resource'> </i>
 info.message.change.title=Il corso \u00E8 ora nello stato [terminato].
 launch.noaccess=Lei non possiede i diritti necessari per avviare questa risorsa didattica.
diff --git a/src/main/java/org/olat/search/ui/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/search/ui/_i18n/LocalStrings_it.properties
index 319f14c6b94755e0cd89d685e9cb8c53706756a3..fa842bd468f01bb9593d7d4ecac8d909721aa67a 100644
--- a/src/main/java/org/olat/search/ui/_i18n/LocalStrings_it.properties
+++ b/src/main/java/org/olat/search/ui/_i18n/LocalStrings_it.properties
@@ -1,4 +1,4 @@
-#Mon Dec 12 09:18:22 CET 2016
+#Tue Mar 28 12:05:09 CEST 2017
 EPSite=Portfolio
 HomeSite=Home
 LibrarySite=Biblioteca
@@ -65,11 +65,26 @@ toolforum=Forum
 type.course.node=Elemento di corso
 type.course.node.bc=Elemento di corso, cartella
 type.course.node.blog=Elemento di corso, blog
+type.course.node.checklist=Elemento di corso, checklist
+type.course.node.co=Elemento di corso, E-mail
 type.course.node.cp=Elemento di corso, contenuto didattico CP
+type.course.node.den=Elemento di corso, assegnazione di termini
 type.course.node.dialog.file=Elemento di corso, discussione documentata (file)
 type.course.node.dialog.forum.message=Elemento di corso, discussione documentata (discussione)
+type.course.node.en=Elemento di corso, iscrizione
 type.course.node.ep=Elemento di corso, compito portfolio
 type.course.node.forum.message=Elemento di corso, forum
+type.course.node.gotomeeting=Elemento di corso, GoToMeeting
+type.course.node.gta=Elemento di corso, compito
+type.course.node.iqself=Elemento di corso, autotest
+type.course.node.iqsurv=Elemento di corso, sondaggio
+type.course.node.iqtest=Elemento di corso, test
+type.course.node.ll=Elemento di corso, lista link
+type.course.node.lti=Elemento di corso, pagina LTI
+type.course.node.membersCourseNodeConf=Elemento di corso, lista dei partecipanti
+type.course.node.ms=Elemento di corso, valutazione
+type.course.node.openmeetings=Elemento di corso, OpenMeetings
+type.course.node.pf=Elemento di corso, cartella del partecipante
 type.course.node.podcast=Elemento di corso, podcast
 type.course.node.projectbroker=Elemento di corso, assegnazione temi
 type.course.node.scorm=Elemento di corso, SCORM
@@ -79,6 +94,10 @@ type.course.node.ta.dropbox=Elemento di corso, compito (cartella di consegna)
 type.course.node.ta.returnbox=Elemento di corso, compito (cartella di restituzione)
 type.course.node.ta.solutionbox=Elemento di corso, compito (soluzione modello)
 type.course.node.ta.task=Elemento di corso, compito (cartella dei compiti)
+type.course.node.tu=Elemento di corso, pagina esterna
+type.course.node.vc=Elemento di corso, aula virtuale
+type.course.node.video=Elemento di corso, video
+type.course.node.vitero=Elemento di corso, vitero
 type.course.node.wiki=Elemento di corso, wiki
 type.db.EPDefaultMap=Raccoglitore per portfolio
 type.db.EPStructuredMap=Compito portfolio
diff --git a/src/test/java/org/olat/course/nodes/gta/manager/GTAManagerTest.java b/src/test/java/org/olat/course/nodes/gta/manager/GTAManagerTest.java
index 91eb3470a0007e6da262471151204cbc6eeb1190..f96e3b4394de2f9decacd1c0109acc09d91e1643 100644
--- a/src/test/java/org/olat/course/nodes/gta/manager/GTAManagerTest.java
+++ b/src/test/java/org/olat/course/nodes/gta/manager/GTAManagerTest.java
@@ -600,7 +600,7 @@ public class GTAManagerTest extends OlatTestCase {
 	}
 	
 	@Test
-	public void roundsRobin() {
+	public void roundRobin_oneRound() {
 		String[] slots = new String[]{ "A", "B", "C" };
 		List<String> usedSlots = new ArrayList<>();
 		usedSlots.add("A");
@@ -608,7 +608,40 @@ public class GTAManagerTest extends OlatTestCase {
 		usedSlots.add("C");
 		usedSlots.add("A");
 
+		String nextSlot = gtaManager.nextSlotRoundRobin(slots, usedSlots);
+		Assert.assertEquals("B", nextSlot);
+	}
+	
+	@Test
+	public void roundRobin_randomRound() {
+		String[] slots = new String[]{ "A", "B", "C" };
+		List<String> usedSlots = new ArrayList<>();
+		usedSlots.add("A");
+		usedSlots.add("B");
+		usedSlots.add("B");
+		usedSlots.add("B");
+		usedSlots.add("C");
+		usedSlots.add("C");
+		usedSlots.add("A");
+
 		String nextSlot = gtaManager.nextSlotRoundRobin(slots, usedSlots);
 		Assert.assertEquals("A", nextSlot);
 	}
+	
+	@Test
+	public void roundRobin_randomRoundAlt() {
+		String[] slots = new String[]{ "A", "B", "C" };
+		List<String> usedSlots = new ArrayList<>();
+		usedSlots.add("A");
+		usedSlots.add("B");
+		usedSlots.add("B");
+		usedSlots.add("B");
+		usedSlots.add("C");
+		usedSlots.add("C");
+		usedSlots.add("A");
+		usedSlots.add("A");
+
+		String nextSlot = gtaManager.nextSlotRoundRobin(slots, usedSlots);
+		Assert.assertEquals("C", nextSlot);
+	}
 }
diff --git a/src/test/java/org/olat/ims/qti21/model/xml/OnyxToQtiWorksAssessementItemsTest.java b/src/test/java/org/olat/ims/qti21/model/xml/OnyxToQtiWorksAssessementItemsTest.java
index 2b0cb257a7dce941c11b261054d4e730728d27b3..4f717dacfc0ecf0cfebd99ad082bda686d69a888 100644
--- a/src/test/java/org/olat/ims/qti21/model/xml/OnyxToQtiWorksAssessementItemsTest.java
+++ b/src/test/java/org/olat/ims/qti21/model/xml/OnyxToQtiWorksAssessementItemsTest.java
@@ -27,7 +27,6 @@ import java.net.URISyntaxException;
 import java.net.URL;
 import java.nio.charset.Charset;
 import java.nio.file.Files;
-import java.nio.file.StandardCopyOption;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.UUID;
@@ -114,10 +113,9 @@ public class OnyxToQtiWorksAssessementItemsTest {
 			DefaultHandler2 myHandler = new Onyx38ToQtiWorksHandler(xtw);
 			saxParser.setProperty("http://xml.org/sax/properties/lexical-handler", myHandler);
 			saxParser.parse(in, myHandler);
-			
-			Files.copy(outputFile.toPath(), new File("/HotCoffee/Onyx", xmlFile.getName()).toPath(), StandardCopyOption.REPLACE_EXISTING);
 		} catch(Exception e1) {
 			log.error("", e1);
+			throw e1;
 		}
 
 		QtiXmlReader qtiXmlReader = new QtiXmlReader(new JqtiExtensionManager());
diff --git a/src/test/java/org/olat/ims/qti21/model/xml/OnyxToQtiWorksAssessementTestsTest.java b/src/test/java/org/olat/ims/qti21/model/xml/OnyxToQtiWorksAssessementTestsTest.java
index 260ccedf1b111a40bef2c1f66966b2ab5be1a720..81304561cfcb39b8fcab114495a018ede42b7b0d 100644
--- a/src/test/java/org/olat/ims/qti21/model/xml/OnyxToQtiWorksAssessementTestsTest.java
+++ b/src/test/java/org/olat/ims/qti21/model/xml/OnyxToQtiWorksAssessementTestsTest.java
@@ -27,7 +27,6 @@ import java.net.URISyntaxException;
 import java.net.URL;
 import java.nio.charset.Charset;
 import java.nio.file.Files;
-import java.nio.file.StandardCopyOption;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.UUID;
@@ -103,10 +102,9 @@ public class OnyxToQtiWorksAssessementTestsTest {
 			DefaultHandler2 myHandler = new Onyx38ToQtiWorksHandler(xtw);
 			saxParser.setProperty("http://xml.org/sax/properties/lexical-handler", myHandler);
 			saxParser.parse(in, myHandler);
-			
-			Files.copy(outputFile.toPath(), new File("/HotCoffee/Onyx", xmlFile.getName()).toPath(), StandardCopyOption.REPLACE_EXISTING);
 		} catch(Exception e1) {
 			log.error("", e1);
+			throw e1;
 		}
 
 		QtiXmlReader qtiXmlReader = new QtiXmlReader(new JqtiExtensionManager());