diff --git a/course/admin.py b/course/admin.py
index a4ff26fe029603757abe34f91270e4c5690d13ab..af315517e17b59a55e2c598b0ae281b9fa91b493 100644
--- a/course/admin.py
+++ b/course/admin.py
@@ -24,7 +24,8 @@ THE SOFTWARE.
 
 import six
 
-from django.utils.translation import ugettext_lazy as _, string_concat
+from django.utils.translation import (
+        ugettext_lazy as _, string_concat, pgettext)
 from django.contrib import admin
 
 from course.models import (
@@ -293,15 +294,18 @@ class ParticipationAdmin(admin.ModelAdmin):
         from django.core.urlresolvers import reverse
         from django.conf import settings
 
-        return _("<a href='%(link)s'>%(last_name)s, %(first_name)s</a>") % {
-                "link": reverse(
-                    "admin:%s_change" % settings.AUTH_USER_MODEL.replace(".", "_")
-                    .lower(),
-                    args=(obj.user.id,)),
-                "last_name": verbose_blank(obj.user.last_name),
-                "first_name": verbose_blank(obj.user.first_name)}
-
-    get_user.short_description = _("Name")
+        return string_concat(
+                "<a href='%(link)s'>", _("%(last_name)s, %(first_name)s"), 
+                "</a>"
+                ) % {
+                        "link": reverse(
+                            "admin:%s_change" % settings.AUTH_USER_MODEL.replace(".", "_")
+                            .lower(),
+                            args=(obj.user.id,)),
+                        "last_name": verbose_blank(obj.user.last_name),
+                        "first_name": verbose_blank(obj.user.first_name)}
+
+    get_user.short_description = pgettext("real name of a user", "Name")
     get_user.admin_order_field = "user__last_name"
     get_user.allow_tags = True
 
diff --git a/course/flow.py b/course/flow.py
index 561b9a10ef1c6c17e20248ac5df3e613e55a87e2..a340dda92db4aece39e6036bad465d91f082f47c 100644
--- a/course/flow.py
+++ b/course/flow.py
@@ -1643,8 +1643,9 @@ def finish_flow_session_view(pctx, flow_session_id):
                 from django.core.mail import EmailMessage
                 msg = EmailMessage(
                         string_concat("[%(identifier)s:%(flow_id)s] ",
-                            _("Submission by %s") % flow_session.participation)
-                        % {'identifier': fctx.course.identifier,
+                            _("Submission by %(participation)s"))
+                        % {'participation': flow_session.participation,
+                            'identifier': fctx.course.identifier,
                             'flow_id': flow_session.flow_id},
                         message,
                         fctx.course.from_email,
diff --git a/course/templates/course/submit-notify.txt b/course/templates/course/submit-notify.txt
index 5f482b67fcb1ae4b56d01d4917fa847edcf22448..2af4e13ed12a794a1458feb62e702efe9cac880e 100644
--- a/course/templates/course/submit-notify.txt
+++ b/course/templates/course/submit-notify.txt
@@ -1,7 +1,6 @@
 {% load i18n %}{% blocktrans with course_identifier=course.identifier %}Dear course staff of {{ course_identifier }},{% endblocktrans %}
  
-{% if flow_session.participation %}{% blocktrans with participant=flow_session.participation.user %}Participant '{{ participant }}'{% endblocktrans %}{% else %}{% trans "A participant" %}{% endif %}{% blocktrans with flow_id=flow_session.flow_id course_identifier=course.identifier %} has just submitted
-their work on '{{ flow_id }}'.
+{% if flow_session.participation %}{% blocktrans with participant=flow_session.participation.user %}Participant '{{ participant }}'{% endblocktrans %}{% else %}{% trans "A participant" %}{% endif %}{% blocktrans with flow_id=flow_session.flow_id course_identifier=course.identifier %} has just submitted his/her work on '{{ flow_id }}'.
 
 Click here to review it:
 {{ review_uri }}
diff --git a/locale/zh_CN/LC_MESSAGES/django.po b/locale/zh_CN/LC_MESSAGES/django.po
index 749d42dfd92908ba15cfc84b3a621384bc183741..f8c81b32edf6158695edd9b4491474d8885a9dff 100644
--- a/locale/zh_CN/LC_MESSAGES/django.po
+++ b/locale/zh_CN/LC_MESSAGES/django.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-09-17 11:33+0800\n"
+"POT-Creation-Date: 2015-10-13 16:49+0800\n"
 "Last-Translator:  Dong Zhuang <dzhuang.scut@gmail.com>\n"
 "Language-Team: Dong Zhuang <dzhuang.scut@gmail.com>\n"
 "MIME-Version: 1.0\n"
@@ -17,63 +17,85 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: \n"
 
-#: .\course\admin.py:84 .\course\admin.py:266
+#: .\course\admin.py:86
 msgid "First name"
 msgstr "名"
 
-#: .\course\admin.py:90 .\course\admin.py:272
+#: .\course\admin.py:92
 msgid "Last name"
 msgstr "姓"
 
-#: .\course\admin.py:256
+#: .\course\admin.py:280
 msgid "Tags must belong to same course as participation."
 msgstr "Tags必须与同一课程中的participation一致. "
 
-#: .\course\admin.py:375 .\course\admin.py:496 .\course\admin.py:580
-#: .\course\admin.py:693 .\course\admin.py:768 .\course\exam.py:93
-#: .\course\templates\course\gradebook-single.html:17 .\course\views.py:500
+#: .\course\admin.py:290
+msgid "(blank)"
+msgstr ""
+
+#. Translators: Username displayed in gradebook by opportunity
+#. Translators: how the real name of a user is displayed.
+#: .\course\admin.py:298 .\course\templates\course\gradebook-by-opp.html:111
+#: .\course\templates\course\gradebook-participant.html:39
+#: .\course\templates\course\gradebook.html:36
+#, python-format
+msgid "%(last_name)s, %(first_name)s"
+msgstr "%(last_name)s%(first_name)s"
+
+#: .\course\admin.py:308 .\course\exam.py:183
+#: .\course\templates\course\gradebook-by-opp.html:98
+#: .\course\templates\course\gradebook-participant.html:35
+#: .\course\templates\course\gradebook.html:25
+msgctxt "real name of a user"
+msgid "Name"
+msgstr "姓名"
+
+#: .\course\admin.py:411 .\course\admin.py:532 .\course\admin.py:617
+#: .\course\admin.py:730 .\course\admin.py:805 .\course\admin.py:887
+#: .\course\exam.py:95 .\course\templates\course\gradebook-single.html:17
+#: .\course\views.py:581
 msgid "Participant"
 msgstr "参与者"
 
-#: .\course\admin.py:473 .\course\admin.py:575 .\course\admin.py:683
-#: .\course\admin.py:763 .\course\models.py:230 .\course\models.py:253
-#: .\course\models.py:298 .\course\models.py:333 .\course\models.py:383
-#: .\course\models.py:413 .\course\models.py:434 .\course\models.py:999
-#: .\course\models.py:1363
+#: .\course\admin.py:509 .\course\admin.py:612 .\course\admin.py:720
+#: .\course\admin.py:800 .\course\models.py:250 .\course\models.py:273
+#: .\course\models.py:318 .\course\models.py:353 .\course\models.py:407
+#: .\course\models.py:437 .\course\models.py:458 .\course\models.py:1029
+#: .\course\models.py:1393
 msgid "Course"
 msgstr "课程"
 
-#: .\course\admin.py:478 .\course\flow.py:1564 .\course\models.py:415
-#: .\course\models.py:449 .\course\models.py:825 .\course\models.py:897
-#: .\course\models.py:1013 .\course\models.py:1367
+#: .\course\admin.py:514 .\course\flow.py:1721 .\course\models.py:439
+#: .\course\models.py:473 .\course\models.py:855 .\course\models.py:927
+#: .\course\models.py:1043 .\course\models.py:1397
 #: .\course\templates\course\gradebook-opp-list.html:26
-#: .\course\templates\course\gradebook-single.html:140 .\course\views.py:346
-#: .\course\views.py:428 .\course\views.py:504
+#: .\course\templates\course\gradebook-single.html:140 .\course\views.py:427
+#: .\course\views.py:509 .\course\views.py:586
 msgid "Flow ID"
 msgstr ""
 
-#: .\course\admin.py:487 .\course\models.py:552
+#: .\course\admin.py:523 .\course\models.py:582
 #: .\course\templates\course\gradebook-single.html:225
 msgid "Page ID"
 msgstr ""
 
-#: .\course\admin.py:494
+#: .\course\admin.py:530
 msgid "anonymous"
 msgstr "匿名"
 
-#: .\course\admin.py:501
+#: .\course\admin.py:537
 msgid "Has answer"
 msgstr "已经回答"
 
-#: .\course\admin.py:506
+#: .\course\admin.py:542
 msgid "Flow Session ID"
 msgstr ""
 
-#: .\course\admin.py:688
+#: .\course\admin.py:725
 msgid "Opportunity"
 msgstr "机会"
 
-#: .\course\admin.py:889
+#: .\course\admin.py:934
 msgid "Revoke Exam Tickets"
 msgstr "撤销测验Ticket"
 
@@ -112,7 +134,7 @@ msgstr "分钟"
 msgid "Course module"
 msgstr "课程模块"
 
-#: .\course\auth.py:121
+#: .\course\auth.py:122
 msgid "Error while impersonating."
 msgstr "虚拟用户时出现错误. "
 
@@ -120,38 +142,34 @@ msgstr "虚拟用户时出现错误. "
 #. userfor impersonating. Customize how the name is
 #. shown, but leave email first to retain usability
 #. of form sorted by last name.
-#: .\course\auth.py:137 .\course\exam.py:70 .\course\views.py:478
+#: .\course\auth.py:138 .\course\exam.py:71 .\course\views.py:559
 #, python-format
 msgid "%(user_email)s - %(user_lastname)s, %(user_firstname)s"
 msgstr "%(user_lastname)s%(user_firstname)s(%(user_email)s)"
 
-#: .\course\auth.py:148
+#: .\course\auth.py:149
 msgid "Select user to impersonate."
 msgstr "选择您想模拟的用户. "
 
-#: .\course\auth.py:149 .\course\exam.py:179 .\course\models.py:444
-#: .\course\templates\course\grade-import-preview.html:18
+#: .\course\auth.py:151 .\course\exam.py:182 .\course\models.py:468
+#: .\course\templates\course\grade-import-preview.html:19
 msgid "User"
 msgstr "用户"
 
-#: .\course\auth.py:151
+#: .\course\auth.py:153
 msgid "Impersonate"
 msgstr "用户模拟"
 
-#: .\course\auth.py:158
+#: .\course\auth.py:160
 msgid "Already impersonating someone."
 msgstr "已经模拟了某个用户. "
 
-#: .\course\auth.py:167
-#, python-format
-msgid "Now impersonating '%s'."
-msgstr "正在模拟用户\"%s\". "
-
-#: .\course\auth.py:176 .\relate\templates\base.html:76
+#: .\course\auth.py:176 .\relate\templates\base.html:75
 msgid "Impersonate user"
 msgstr "用户模拟"
 
-#: .\course\auth.py:186 .\relate\templates\base.html:74
+#: .\course\auth.py:186 .\relate\templates\base-page-top.html:66
+#: .\relate\templates\base.html:73
 msgid "Stop impersonating"
 msgstr "停止模拟用户"
 
@@ -167,8 +185,8 @@ msgstr "未模拟任何用户. "
 msgid "Stop impersonating user"
 msgstr "停止模拟用户"
 
-#: .\course\auth.py:280 .\course\templates\course\course-page.html:38
-#: .\course\templates\course\flow-start.html:186
+#: .\course\auth.py:280 .\course\templates\course\course-page.html:28
+#: .\course\templates\course\flow-start.html:195
 #: .\course\templates\course\login.html:7 .\relate\templates\403.html:14
 #: .\relate\templates\base.html:111
 msgid "Sign in"
@@ -176,11 +194,11 @@ msgstr "登录"
 
 #: .\course\auth.py:308 .\course\auth.py:662
 msgid "Sign-in not allowed in this facility."
-msgstr "不允许在当前设施内登录."
+msgstr "不允许在当前教学设施内登录."
 
 #: .\course\auth.py:310 .\course\auth.py:663
 msgid "user not allowed to sign in in facility"
-msgstr "用户不允许在该设施内登录"
+msgstr "用户不允许在该教学设施内登录"
 
 #: .\course\auth.py:333
 msgid "Username"
@@ -235,11 +253,11 @@ msgstr "该电子邮件已经注册, 您是否需要 <a href='%s'>重置密码</
 #: .\course\templates\course\gradebook.html:7
 #: .\course\templates\course\grading-statistics.html:5
 #: .\course\templates\course\home.html:6
-#: .\course\templates\course\home.html:30
+#: .\course\templates\course\home.html:50
 #: .\course\templates\course\sandbox-page.html:17
 #: .\course\templates\course\sign-in-email.txt:2
-#: .\relate\templates\admin\base_site.html:5 .\relate\templates\base.html:12
-#: .\relate\templates\base.html.py:57 .\relate\templates\maintenance.html:6
+#: .\relate\templates\admin\base_site.html:5 .\relate\templates\base.html:11
+#: .\relate\templates\base.html.py:56 .\relate\templates\maintenance.html:7
 msgid "RELATE"
 msgstr "RELATE"
 
@@ -255,7 +273,7 @@ msgstr "Email已发送, 请进入邮箱并点击相关的链接. "
 msgid "Sign up"
 msgstr "注册"
 
-#: .\course\auth.py:430 .\course\auth.py:576 .\course\models.py:381
+#: .\course\auth.py:430 .\course\auth.py:576 .\course\models.py:405
 msgid "Email"
 msgstr "Email"
 
@@ -283,8 +301,7 @@ msgid "Password confirmation"
 msgstr ""
 
 #: .\course\auth.py:508 .\course\auth.py:694 .\course\auth.py:706
-#: .\course\templates\course\course-page.html:30
-#: .\course\templates\course\home.html:22 .\course\versioning.py:445
+#: .\course\versioning.py:496
 msgid "Update"
 msgstr "更新"
 
@@ -332,7 +349,7 @@ msgid "Profile data saved."
 msgstr "用户信息已更新. "
 
 #. Translators: format of event kind in Event model
-#: .\course\calendar.py:50 .\course\calendar.py:192 .\course\models.py:256
+#: .\course\calendar.py:50 .\course\calendar.py:192 .\course\models.py:276
 msgid "Should be lower_case_with_underscores, no spaces allowed."
 msgstr "只允许小写字母和下划线, 不允许有空格. "
 
@@ -395,7 +412,7 @@ msgstr "未创建event. "
 msgid "Events created."
 msgstr "Event创建成功. "
 
-#: .\course\calendar.py:186 .\course\templates\course\course-base.html:105
+#: .\course\calendar.py:186 .\course\templates\course\course-base.html:108
 msgid "Create recurring events"
 msgstr "创建重复进行的event"
 
@@ -411,7 +428,7 @@ msgstr "Event重新编号完成. "
 msgid "No events found."
 msgstr "未找到Event. "
 
-#: .\course\calendar.py:255 .\course\templates\course\course-base.html:106
+#: .\course\calendar.py:255 .\course\templates\course\course-base.html:109
 msgid "Renumber events"
 msgstr "重新编号"
 
@@ -484,282 +501,291 @@ msgstr "不要提交session并评分"
 msgid "unknown expiration mode"
 msgstr "未知的过期模式"
 
-#: .\course\constants.py:207
+#: .\course\constants.py:213
 msgctxt "Flow permission"
 msgid "View the flow"
 msgstr "查看flow"
 
-#: .\course\constants.py:209
+#: .\course\constants.py:215
 msgctxt "Flow permission"
 msgid "Submit answers"
 msgstr "提交回答"
 
-#: .\course\constants.py:211
+#: .\course\constants.py:217
 msgctxt "Flow permission"
 msgid "End session"
 msgstr "结束session"
 
-#: .\course\constants.py:213
+#: .\course\constants.py:219
 msgctxt "Flow permission"
 msgid "Change already-graded answer"
 msgstr "修改已经评分的回答"
 
-#: .\course\constants.py:216
+#: .\course\constants.py:222
 msgctxt "Flow permission"
 msgid "See whether an answer is correct"
 msgstr "查看答案是否正确"
 
-#: .\course\constants.py:219
+#: .\course\constants.py:225
 msgctxt "Flow permission"
 msgid "See the correct answer before answering"
 msgstr "在回答前查看正确的答案"
 
-#: .\course\constants.py:222
+#: .\course\constants.py:228
 msgctxt "Flow permission"
 msgid "See the correct answer after answering"
 msgstr "在回答后查看正确的答案"
 
-#: .\course\constants.py:225
+#: .\course\constants.py:231
+msgctxt "Flow permission"
+msgid "Cannot see flow result"
+msgstr "可以查看flow的结果"
+
+#: .\course\constants.py:234
 msgctxt "Flow permission"
 msgid "Set the session to 'roll over' expiration mode"
 msgstr "将这个session设为“展期”的过期模式"
 
-#: .\course\constants.py:227
+#: .\course\constants.py:236
 msgctxt "Flow permission"
 msgid "See session time"
 msgstr "查看session时间"
 
-#: .\course\constants.py:239
+#: .\course\constants.py:248
 msgctxt "Flow rule kind choices"
 msgid "Session Start"
 msgstr "session开始"
 
-#: .\course\constants.py:241
+#: .\course\constants.py:250
 msgctxt "Flow rule kind choices"
 msgid "Session Access"
 msgstr "session访问"
 
-#: .\course\constants.py:243
+#: .\course\constants.py:252
 msgctxt "Flow rule kind choices"
 msgid "Grading"
 msgstr "评分"
 
-#: .\course\constants.py:281
+#: .\course\constants.py:290
 msgctxt "Grade aggregation strategy"
 msgid "Use the max grade"
 msgstr "使用最高分"
 
-#: .\course\constants.py:283
+#: .\course\constants.py:292
 msgctxt "Grade aggregation strategy"
 msgid "Use the avg grade"
 msgstr "使用平均分"
 
-#: .\course\constants.py:285
+#: .\course\constants.py:294
 msgctxt "Grade aggregation strategy"
 msgid "Use the min grade"
 msgstr "使用最低分"
 
-#: .\course\constants.py:287
+#: .\course\constants.py:296
 msgctxt "Grade aggregation strategy"
 msgid "Use the earliest grade"
 msgstr "使用最早的得分"
 
-#: .\course\constants.py:289
+#: .\course\constants.py:298
 msgctxt "Grade aggregation strategy"
 msgid "Use the latest grade"
 msgstr "使用最迟的得分"
 
-#: .\course\constants.py:306
+#: .\course\constants.py:315
 msgctxt "Grade state change"
 msgid "Grading started"
 msgstr "评分已经开始"
 
-#: .\course\constants.py:308
+#: .\course\constants.py:317
 msgctxt "Grade state change"
 msgid "Graded"
 msgstr "已评分"
 
-#: .\course\constants.py:310
+#: .\course\constants.py:319
 msgctxt "Grade state change"
 msgid "Retrieved"
 msgstr "已获取"
 
-#: .\course\constants.py:312
+#: .\course\constants.py:321
 msgctxt "Grade state change"
 msgid "Unavailable"
 msgstr "无法获取"
 
-#: .\course\constants.py:314
+#: .\course\constants.py:323
 msgctxt "Grade state change"
 msgid "Extension"
 msgstr "延期"
 
-#: .\course\constants.py:316
+#: .\course\constants.py:325
 msgctxt "Grade state change"
 msgid "Report sent"
 msgstr "报告已发送"
 
-#: .\course\constants.py:318
+#: .\course\constants.py:327
 msgctxt "Grade state change"
 msgid "Do-over"
 msgstr "重新开始"
 
-#: .\course\constants.py:320
+#: .\course\constants.py:329
 msgctxt "Grade state change"
 msgid "Exempt"
 msgstr "剔除"
 
-#: .\course\constants.py:332
+#: .\course\constants.py:341
 msgctxt "Exam ticket state"
 msgid "Valid"
 msgstr "已通过有效性验证"
 
-#: .\course\constants.py:334
+#: .\course\constants.py:343
 msgctxt "Exam ticket state"
 msgid "Used"
 msgstr "已使用"
 
-#: .\course\constants.py:336
+#: .\course\constants.py:345
 msgctxt "Exam ticket state"
 msgid "Revoked"
 msgstr "已撤回"
 
-#: .\course\content.py:113
+#: .\course\content.py:116
 #, python-format
 msgid "resource '%s' not found"
 msgstr "未找到资源\"%s\""
 
-#: .\course\content.py:397
+#: .\course\content.py:400
 msgid "I have no idea what a processing instruction is."
 msgstr "我也不知道处理的指令是什么"
 
-#: .\course\content.py:701
+#: .\course\content.py:704
 #, python-format
 msgid "invalid period: %s"
 msgstr "无效的周期:%s"
 
-#: .\course\content.py:790 .\course\content.py:815
+#: .\course\content.py:793 .\course\content.py:818
 #, python-format
 msgid "unrecognized date/time specification: '%s' (interpreted as 'now')"
 msgstr "无法识别的日期/时间设定: '%s' (被解释为\"现在\")"
 
-#: .\course\content.py:935
+#: .\course\content.py:937
 #, python-format
 msgid "page '%(group_id)s/%(page_id)s' in flow '%(flow_id)s'"
 msgstr "page \"%(group_id)s/%(page_id)s\" (在flow \"%(flow_id)s\"中)"
 
-#: .\course\content.py:988
+#: .\course\content.py:990
 #, python-format
 msgid "repo page class must conist of two dotted components (invalid: '%s')"
 msgstr "repo类型的page必须包括两个dotted组件 (无效: \"%s\")"
 
-#: .\course\enrollment.py:66
+#: .\course\enrollment.py:67
 msgid "Already enrolled. Cannot re-renroll."
 msgstr "已经加入课程, 不能再次申请加入. "
 
-#: .\course\enrollment.py:71
+#: .\course\enrollment.py:72
 msgid "Course is not accepting enrollments."
 msgstr "本课程不接受加入申请. "
 
-#: .\course\enrollment.py:78
+#: .\course\enrollment.py:79
 msgid "Can only enroll using POST request"
 msgstr "必须用POST请求的方式申请加入课程"
 
-#: .\course\enrollment.py:86
+#: .\course\enrollment.py:87
 msgid ""
 "Your email address is not yet confirmed. Confirm your email to continue."
 msgstr "您的电子邮件地址尚未确定, 请先确定邮件再继续. "
 
-#: .\course\enrollment.py:104
+#: .\course\enrollment.py:105
 #, python-format
 msgid "Enrollment not allowed. Please use your '%s' email to enroll."
 msgstr "不允许加入, 请使用您的电子邮件\"%s\"申请加入课程. "
 
-#: .\course\enrollment.py:143
+#: .\course\enrollment.py:147
 msgid "New enrollment request"
 msgstr "新的加入课程申请"
 
-#: .\course\enrollment.py:150
+#: .\course\enrollment.py:154
 msgid ""
 "Enrollment request sent. You will receive notifcation by email once your "
 "request has been acted upon."
 msgstr "加入课程的申请已经发送, 如果您的要求被批准, 您将会收到邮件通知. "
 
-#: .\course\enrollment.py:156
+#: .\course\enrollment.py:160
 msgid "Successfully enrolled."
 msgstr "成功加入课程"
 
-#: .\course\enrollment.py:191
-msgid "Your enrollment request"
-msgstr "对您加入课程申请的答复"
-
 #. Translators: how many enroll requests have ben processed.
-#: .\course\enrollment.py:203
+#: .\course\enrollment.py:188
 #, python-format
 msgid "%d requests processed."
 msgstr "%d个加入申请已处理. "
 
-#: .\course\enrollment.py:209
+#: .\course\enrollment.py:206
+msgid "Your enrollment request"
+msgstr "对您加入课程申请的答复"
+
+#: .\course\enrollment.py:218
 msgctxt "Admin"
 msgid "Approve enrollment"
 msgstr "批准加入"
 
-#: .\course\enrollment.py:215
+#: .\course\enrollment.py:224
 msgid "Deny enrollment"
 msgstr "拒绝加入"
 
-#: .\course\enrollment.py:226 .\course\models.py:386
+#: .\course\enrollment.py:235 .\course\models.py:410
 #: .\course\templates\course\gradebook-participant-list.html:27
 msgid "Role"
 msgstr "在课程中的角色"
 
-#: .\course\enrollment.py:228
+#: .\course\enrollment.py:237
 msgid "Enter fully qualified email addresses, one per line."
 msgstr "输入允许加入课程用户的Email, 每行一个. "
 
-#: .\course\enrollment.py:229
+#: .\course\enrollment.py:238
 msgid "Emails"
 msgstr "Email"
 
-#: .\course\enrollment.py:235
+#: .\course\enrollment.py:244
 msgid "Preapprove"
 msgstr "预先批准"
 
-#: .\course\enrollment.py:243
+#: .\course\enrollment.py:252
 msgid "only instructors may do that"
 msgstr "只有任课老师才有执行该操作的权限"
 
-#: .\course\enrollment.py:281
+#: .\course\enrollment.py:309
 #, python-format
-msgid "%(n_created)d preapprovals created, %(n_exist)d already existed."
-msgstr "新加入了%(n_created)d个预批准, 有%(n_exist)d个是之前已经批准的. "
+msgid ""
+"%(n_created)d preapprovals created, %(n_exist)d already existed, %"
+"(n_requested_approved)d pending requests approved."
+msgstr ""
+"新加入了%(n_created)d个预批准, 有%(n_exist)d个是之前已经批准的, 批准了%"
+"(n_requested_approved)d个之前已经提交的申请. "
 
-#: .\course\enrollment.py:292
+#: .\course\enrollment.py:324
 msgid "Create Participation Preapprovals"
 msgstr "用户加入课程预批准"
 
-#: .\course\exam.py:91
+#: .\course\exam.py:93
 msgid "Select participant for whom ticket is to be issued."
 msgstr "选择发放ticket的的用户. "
 
-#: .\course\exam.py:100 .\course\exam.py:267 .\course\models.py:1386
-#: .\course\models.py:1402
+#: .\course\exam.py:102 .\course\exam.py:270 .\course\models.py:1416
+#: .\course\models.py:1432
 msgid "Exam"
 msgstr "测验"
 
-#: .\course\exam.py:103
+#: .\course\exam.py:105
 msgid "Revoke prior exam tickets for this user"
 msgstr "撤回之前发给这个用户的测验ticket"
 
-#: .\course\exam.py:110
+#: .\course\exam.py:112
 msgid "Issue ticket"
 msgstr "发布ticket"
 
-#: .\course\exam.py:129
+#: .\course\exam.py:131
 msgid "User is not enrolled in course."
 msgstr "用户未参与本课程. "
 
-#: .\course\exam.py:153
+#: .\course\exam.py:155
 #, python-format
 msgid ""
 "Ticket issued for <b>%(participation)s</b>. The ticket code is <b>%"
@@ -768,31 +794,24 @@ msgstr ""
 "发给用户<b>%(participation)s</b>的ticket. 该ticket的代码是<b>%(ticket_code)"
 "s</b>."
 
-#: .\course\exam.py:165
+#: .\course\exam.py:167
 msgid "Issue Exam Ticket"
 msgstr "发布测验ticket"
 
-#: .\course\exam.py:174
+#: .\course\exam.py:177
 msgid "List"
 msgstr "列表"
 
-#: .\course\exam.py:180 .\course\templates\course\gradebook-by-opp.html:98
-#: .\course\templates\course\gradebook-participant.html:35
-#: .\course\templates\course\gradebook.html:25
-msgctxt "real name of a user"
-msgid "Name"
-msgstr "姓名"
-
-#: .\course\exam.py:181 .\course\exam.py:228
+#: .\course\exam.py:184 .\course\exam.py:231
 msgctxt "ticket code required to login exam"
 msgid "Code"
 msgstr "登录代码"
 
-#: .\course\exam.py:205
+#: .\course\exam.py:208
 msgid "Instructions for {{ ticket.exam.description }}"
 msgstr "对 {{ ticket.exam.description }} 的使用说明"
 
-#: .\course\exam.py:209
+#: .\course\exam.py:212
 msgid ""
 "These are personalized instructions for {{ ticket.participation.user."
 "last_name }}, {{ ticket.participation.user.first_name }}."
@@ -800,44 +819,44 @@ msgstr ""
 "以下是对 {{ ticket.participation.user.last_name }}{{ ticket.participation."
 "user.first_name }} 个人的说明."
 
-#: .\course\exam.py:213
+#: .\course\exam.py:216
 msgid ""
 "If this is not you, please let the proctor know so that you can get the "
 "correct set of instructions."
 msgstr "如果这不是你,请与监考人联系,以保证你得到正确的使用说明."
 
-#: .\course\exam.py:216
+#: .\course\exam.py:219
 msgid ""
 "Please sit down at your workstation and open a browser at this location:"
 msgstr "请坐在您的电脑前,然后用web浏览器打开网站:"
 
-#: .\course\exam.py:219
+#: .\course\exam.py:222
 msgid "Exam URL"
 msgstr "测验URL"
 
-#: .\course\exam.py:221
+#: .\course\exam.py:224
 msgid ""
 "You should see boxes prompting for your user name and a one-time check-in "
 "code."
 msgstr "您应该会看到一个弹出盒子要求您输入用户名和一次性的登入代码."
 
-#: .\course\exam.py:224
+#: .\course\exam.py:227
 msgid "Enter the following information"
 msgstr "请输入以下信息"
 
-#: .\course\exam.py:226 .\course\exam.py:421
+#: .\course\exam.py:229 .\course\exam.py:442
 msgid "User name"
 msgstr "用户名"
 
-#: .\course\exam.py:230
+#: .\course\exam.py:233
 msgid "You have one hour to complete the exam."
 msgstr "您有一个小时时间完成这个测验. "
 
-#: .\course\exam.py:232
+#: .\course\exam.py:235
 msgid "Good luck!"
-msgstr ""
+msgstr "祝你好运! "
 
-#: .\course\exam.py:248
+#: .\course\exam.py:251
 msgid ""
 "Enter <a href=\"http://documen.tician.de/relate/content.html#relate-markup"
 "\">RELATE markup</a> containing Django template statements to render your "
@@ -854,185 +873,186 @@ msgstr ""
 "<tt>{{ tkt.code }}</tt>, <tt>{{ tkt.exam.description }}</tt>, 以及<tt>"
 "{{ checkin_uri }}</tt> 作为占位符. 请参考以上的例子."
 
-#: .\course\exam.py:269
+#: .\course\exam.py:272
 msgid "Ticket Format"
 msgstr "ticket格式"
 
-#: .\course\exam.py:275
+#: .\course\exam.py:278
 msgid "Revoke prior exam tickets"
 msgstr "撤回之前的测验ticket"
 
-#: .\course\exam.py:282
+#: .\course\exam.py:285
 msgid "Issue tickets"
 msgstr "发布ticket"
 
-#: .\course\exam.py:294
+#: .\course\exam.py:297
 msgid "must be instructor or TA to batch-issue tickets"
 msgstr "只有任课老师(instructor)和助理(TA)可以批量发布ticket"
 
-#: .\course\exam.py:346 .\course\exam.py:354
+#: .\course\exam.py:349 .\course\exam.py:357
 msgid "Template rendering failed"
 msgstr "模板渲染失败"
 
-#: .\course\exam.py:360
+#: .\course\exam.py:363
 #, python-format
 msgid "%d tickets issued."
 msgstr "%d个ticket已发布. "
 
-#: .\course\exam.py:368
+#: .\course\exam.py:371
 msgid "Batch-Issue Exam Tickets"
 msgstr "批量发布测验ticket"
 
-#: .\course\exam.py:424
+#: .\course\exam.py:393
+msgid "User name or ticket code not recognized."
+msgstr "用户名或ticket代码无法识别. "
+
+#: .\course\exam.py:399
+msgid "Ticket is not in usable state. (Has it been revoked?)"
+msgstr "ticket不处于可用状态. (它有没有被激活?)"
+
+#: .\course\exam.py:409
+msgid "Ticket has exceeded its validity period."
+msgstr "ticket已经超过了验证时间. "
+
+#: .\course\exam.py:412
+msgid "Exam has not started yet."
+msgstr "测验还没有开始. "
+
+#: .\course\exam.py:417
+msgid "Exam has ended."
+msgstr "测验已经结束. "
+
+#: .\course\exam.py:419
+msgid "Ticket is valid."
+msgstr "ticket无效."
+
+#: .\course\exam.py:445
 msgid "This is typically your full email address."
 msgstr "通常是你的完整电子邮件. "
 
-#: .\course\exam.py:425
+#: .\course\exam.py:446
 msgid "Code"
 msgstr "代码"
 
-#: .\course\exam.py:432
+#: .\course\exam.py:453
 msgid "Check in"
 msgstr "登入"
 
-#: .\course\exam.py:450
-msgid "Invalid check-in data."
-msgstr "无效的登入数据."
-
-#: .\course\exam.py:479
+#: .\course\exam.py:508
 msgid "Check in for Exam"
 msgstr "登入测验"
 
-#: .\course\exam.py:566
+#: .\course\exam.py:584
 msgid "Error while processing exam lockdown: ticket not found."
 msgstr "处理测验锁定时出错:未找到ticket. "
 
-#: .\course\flow.py:80
+#: .\course\flow.py:84
 msgid "cannot grade ungraded answer"
 msgstr "无法为未评分的回答进行评分"
 
-#: .\course\flow.py:491 .\course\flow.py:1495
+#: .\course\flow.py:500
 msgid "Can't end a session that's already ended"
 msgstr "无法结束已经结束的session"
 
-#: .\course\flow.py:539
+#: .\course\flow.py:548
 msgid "Can't expire a session that's not in progress"
 msgstr "无法将已经过期的session设为过期"
 
-#: .\course\flow.py:541
+#: .\course\flow.py:550
 msgid "Can't expire an anonymous flow session"
 msgstr "无法将匿名的session设为过期"
 
-#: .\course\flow.py:579
+#: .\course\flow.py:593
 #, python-format
 msgid "invalid expiration mode '%(mode)s' on flow session ID %(session_id)d"
 msgstr "flow session ID %(session_id)d的过期模式\"%(mode)s\"为无效"
 
 #. Translators: grade flow: calculating grade.
-#: .\course\flow.py:614
+#: .\course\flow.py:628
 #, python-format
 msgid "Counted at %(percent).1f%% of %(point).1f points"
 msgstr "计分为满分%(point).1f中的%(percent).1f%%"
 
-#: .\course\flow.py:681
+#: .\course\flow.py:695
 msgid "Can't reopen a session that's already in progress"
 msgstr "无法重新打开为正在进行中的session"
 
-#: .\course\flow.py:684
+#: .\course\flow.py:698
 msgid "Can't reopen anonymous sessions"
 msgstr "无法重新打开匿名的session"
 
-#: .\course\flow.py:692
+#: .\course\flow.py:706
 #, python-format
 msgid ""
 "Session reopened at %(now)s, previous completion time was '%(complete_time)"
 "s'."
 msgstr "在%(now)s重新打开Session, 上一次结束的时间为'%(complete_time)s. "
 
-#: .\course\flow.py:762
+#: .\course\flow.py:776
 #, python-format
 msgid "Session regraded at %(time)s."
 msgstr "Session在%(time)s已重新评分. "
 
-#: .\course\flow.py:780
+#: .\course\flow.py:794
 msgid "cannot recalculate grade on in-progress session"
 msgstr "无法为正在进行中的session重新计算得分"
 
-#: .\course\flow.py:785
+#: .\course\flow.py:799
 #, python-format
 msgid "Session grade recomputed at %(time)s."
 msgstr "本session的评分在%(time)s已重新计算. "
 
-#: .\course\flow.py:817
+#: .\course\flow.py:909
 msgid "new session not allowed"
 msgstr "不允许开始新的session"
 
-#: .\course\flow.py:834
-msgid "unrecognized POST action"
-msgstr "无法识别的POST操作"
-
-#: .\course\flow.py:929 .\course\flow.py:933
+#: .\course\flow.py:947 .\course\flow.py:951
 msgid "may not view other people's sessions"
 msgstr "不允许查看其他人的session"
 
-#: .\course\flow.py:990
+#: .\course\flow.py:1013
 msgid "Save answer"
 msgstr "保存回答"
 
-#: .\course\flow.py:997
+#: .\course\flow.py:1020
 msgid "Submit answer for grading"
 msgstr "提交用于评分的回答"
 
-#: .\course\flow.py:1001
+#: .\course\flow.py:1024
 msgid "Submit final answer"
 msgstr "提交最终回答"
 
-#: .\course\flow.py:1010
+#: .\course\flow.py:1033
 msgid "Save answer and move on"
 msgstr "保存回答并继续"
 
-#: .\course\flow.py:1018
+#: .\course\flow.py:1041
 msgid "Save answer and finish"
 msgstr "保存回答并结束"
 
-#: .\course\flow.py:1031
-msgid "could not find which button was pressed"
-msgstr "无法找到哪一个按钮被按下"
-
-#: .\course\flow.py:1055
+#: .\course\flow.py:1068
 msgid ""
 "No in-progress session record found for this flow. Redirected to flow start "
 "page."
 msgstr "本flow没有找到正在进行中的session, 跳转到flow的起始页面. "
 
-#: .\course\flow.py:1097
+#: .\course\flow.py:1111
 msgid "not allowed to view flow"
 msgstr "不允许查看该flow"
 
-#: .\course\flow.py:1109
-msgid "Answer submission not allowed."
-msgstr "不允许提交回答. "
-
-#: .\course\flow.py:1118
-msgid "Already have final answer."
-msgstr "已经有最终的回答. "
-
-#: .\course\flow.py:1140
-msgid "Answer saved."
-msgstr "回答保存成功. "
-
-#: .\course\flow.py:1226
-msgid "Failed to submit answer."
-msgstr "回答提交失败."
+#: .\course\flow.py:1169
+#, python-format
+msgid "Viewing prior submission dated %(date)s."
+msgstr ""
 
-#: .\course\flow.py:1300
+#: .\course\flow.py:1255
 msgid ""
 "Changes to this session are being prevented because this session yields a "
 "permanent grade, but you have not completed your enrollment process in this "
 "course."
 msgstr ""
 
-#: .\course\flow.py:1316
+#: .\course\flow.py:1271
 msgid ""
 "<p><b>WARNING!</b> What you enter on this page will not be associated with "
 "your user account, likely because you have not completed your enrollment in "
@@ -1046,31 +1066,60 @@ msgid ""
 "work.</b>"
 msgstr ""
 
-#: .\course\flow.py:1406
+#: .\course\flow.py:1367
+msgid "could not find which button was pressed"
+msgstr "无法找到哪一个按钮被按下"
+
+#: .\course\flow.py:1383
+msgid "Answer submission not allowed."
+msgstr "不允许提交回答. "
+
+#: .\course\flow.py:1392
+msgid "Already have final answer."
+msgstr "已经有最终的回答. "
+
+#: .\course\flow.py:1414
+msgid "Answer saved."
+msgstr "回答保存成功. "
+
+#: .\course\flow.py:1499
+msgid "Failed to submit answer."
+msgstr "回答提交失败."
+
+#: .\course\flow.py:1513
 msgid "only POST allowed"
 msgstr "只允许POST操作"
 
-#: .\course\flow.py:1412
+#: .\course\flow.py:1519
 msgid "may only change your own flow sessions"
 msgstr "只允许更改您自己的flow session"
 
-#: .\course\flow.py:1415
+#: .\course\flow.py:1522
 msgid "may only change in-progress flow sessions"
 msgstr "只能更改正在进行中的session"
 
-#: .\course\flow.py:1420
+#: .\course\flow.py:1527
 msgid "invalid expiration mode"
 msgstr "无效的过期模式"
 
-#: .\course\flow.py:1491
+#: .\course\flow.py:1598
 msgid "odd POST parameters"
 msgstr "怪异的POST参数设置"
 
-#: .\course\flow.py:1499
+#: .\course\flow.py:1602
+msgid "Cannot end a session that's already ended"
+msgstr "无法结束已经结束的session"
+
+#: .\course\flow.py:1606
 msgid "not permitted to end session"
 msgstr "不允许结束session"
 
-#: .\course\flow.py:1567
+#: .\course\flow.py:1646
+#, python-format
+msgid "Submission by %(participation)s"
+msgstr "提交,来自%(participation)s"
+
+#: .\course\flow.py:1724
 msgid ""
 "If non-empty, limit the regrading to sessions started under this access "
 "rules tag."
@@ -1078,35 +1127,35 @@ msgstr ""
 "如果access rules的设置不为空, 则对该规则下开始的session进行重新评分受到该规则"
 "的限制. "
 
-#: .\course\flow.py:1569 .\course\models.py:461
+#: .\course\flow.py:1726 .\course\models.py:485
 msgid "Access rules tag"
 msgstr "访问规则tag"
 
-#: .\course\flow.py:1573
+#: .\course\flow.py:1730
 msgid "Regrade in-progress and not-in-progress sessions"
 msgstr "为进行中的和不在进行中的session重新评分"
 
-#: .\course\flow.py:1575
+#: .\course\flow.py:1732
 msgid "Regrade in-progress sessions only"
 msgstr "仅为进行中的session重新评分"
 
-#: .\course\flow.py:1577
+#: .\course\flow.py:1734
 msgid "Regrade not-in-progress sessions only"
 msgstr "仅为非进行中的session重新评分"
 
-#: .\course\flow.py:1579
+#: .\course\flow.py:1736
 msgid "Regraded session in progress"
 msgstr "为正在进行的session重新评分"
 
-#: .\course\flow.py:1582 .\course\templates\course\gradebook-single.html:257
+#: .\course\flow.py:1739 .\course\templates\course\gradebook-single.html:257
 msgid "Regrade"
 msgstr "重新评分"
 
-#: .\course\flow.py:1588
+#: .\course\flow.py:1745
 msgid "must be instructor to regrade flows"
 msgstr "只有任课老师(instructor)才能为flow重新评分"
 
-#: .\course\flow.py:1618
+#: .\course\flow.py:1775
 msgid ""
 "This regrading process is only intended for flows that donot show up in the "
 "grade book. If you would like to regradefor-credit flows, use the "
@@ -1115,7 +1164,7 @@ msgstr ""
 "这个重新评分的过程旨在针对不在“成绩册”中显示的的flow. 如果您想对计入成绩的"
 "flow重新评分, 请使用“成绩册”中的对应功能. "
 
-#: .\course\flow.py:1623
+#: .\course\flow.py:1780
 msgid "Regrade not-for-credit Flow Sessions"
 msgstr "为不计入成绩的flow session重新评分"
 
@@ -1167,17 +1216,17 @@ msgstr "重新计算已结束session的评分"
 msgid "opportunity from wrong course"
 msgstr "机会与课程不符"
 
-#: .\course\grades.py:418 .\course\views.py:379 .\course\views.py:406
-#: .\course\views.py:454
+#: .\course\grades.py:418 .\course\views.py:460 .\course\views.py:487
+#: .\course\views.py:535
 msgid "invalid operation"
 msgstr "无效操作"
 
-#: .\course\grades.py:573 .\course\views.py:752
+#: .\course\grades.py:573 .\course\views.py:836
 msgid "Set access rules tag"
 msgstr "设置访问规则tag"
 
-#: .\course\grades.py:577 .\course\models.py:855 .\course\models.py:909
-#: .\course\models.py:1088 .\course\views.py:796
+#: .\course\grades.py:577 .\course\models.py:885 .\course\models.py:939
+#: .\course\models.py:1118 .\course\views.py:880
 msgid "Comment"
 msgstr "评论"
 
@@ -1238,7 +1287,7 @@ msgstr "该session评分已重新计算. "
 msgid "invalid session operation"
 msgstr "无效的session操作"
 
-#: .\course\grades.py:782 .\course\grades.py:1086 .\course\versioning.py:514
+#: .\course\grades.py:782 .\course\grades.py:1086 .\course\versioning.py:566
 msgctxt "Starting of Error message"
 msgid "Error"
 msgstr "错误"
@@ -1255,7 +1304,7 @@ msgctxt "Field name in Import grades form"
 msgid "Grading opportunity"
 msgstr "得分机会"
 
-#: .\course\grades.py:881 .\course\models.py:1079
+#: .\course\grades.py:881 .\course\models.py:1109
 msgid "Attempt ID"
 msgstr ""
 
@@ -1299,13 +1348,13 @@ msgid "Feedback column"
 msgstr "反馈所在列"
 
 #. Translators: "Max point" refers to full credit in points.
-#: .\course\grades.py:910 .\course\models.py:701 .\course\models.py:1085
+#: .\course\grades.py:910 .\course\models.py:731 .\course\models.py:1115
 msgid "Max points"
 msgstr "满分分值"
 
 #: .\course\grades.py:912 .\course\sandbox.py:70
-#: .\course\templates\course\grade-import-preview.html:14
-#: .\course\versioning.py:451
+#: .\course\templates\course\grade-import-preview.html:15
+#: .\course\versioning.py:502
 msgid "Preview"
 msgstr "预览"
 
@@ -1346,7 +1395,7 @@ msgstr "该flow session不是选定课程的内容"
 msgid "Cannot grade anonymous session"
 msgstr "无法为匿名session评分"
 
-#: .\course\grading.py:210 .\course\templates\course\flow-page.html:42
+#: .\course\grading.py:210 .\course\templates\course\flow-page.html:47
 msgid "Submit"
 msgstr "提交"
 
@@ -1406,7 +1455,7 @@ msgstr "信息已发送. "
 msgid "Send instant message"
 msgstr "发送即时信息"
 
-#: .\course\models.py:75 .\course\models.py:331
+#: .\course\models.py:75 .\course\models.py:351
 #: .\course\templates\course\gradebook-by-opp.html:97
 #: .\course\templates\course\gradebook-participant-list.html:24
 #: .\course\templates\course\gradebook-participant.html:31
@@ -1414,7 +1463,7 @@ msgstr "发送即时信息"
 msgid "User ID"
 msgstr "用户ID"
 
-#: .\course\models.py:78 .\course\models.py:101
+#: .\course\models.py:78 .\course\models.py:103
 msgid "User status"
 msgstr "用户状态"
 
@@ -1436,25 +1485,29 @@ msgstr "用户登录网站token的时间戳."
 msgid "Key time"
 msgstr "登录key的时间"
 
-#: .\course\models.py:91
+#: .\course\models.py:90
+msgid "Your favorite text editor mode for text block or code block."
+msgstr "你喜欢使用的文本编辑器模式,用于文本块或代码块的编辑."
+
+#: .\course\models.py:93
 msgid "Default"
 msgstr "默认"
 
 #. Translators: the text editor used by participants
-#: .\course\models.py:98
+#: .\course\models.py:100
 msgid "Editor mode"
 msgstr "编辑器模式"
 
-#: .\course\models.py:102
+#: .\course\models.py:104
 msgid "User statuses"
 msgstr "用户状态"
 
-#: .\course\models.py:106
+#: .\course\models.py:108
 #, python-format
 msgid "User status for %(user)s"
 msgstr "%(user)s的用户状态"
 
-#: .\course\models.py:118
+#: .\course\models.py:120
 msgid ""
 "A course identifier. Alphanumeric with dashes, no spaces. This is visible in "
 "URLs and determines the location on your file system where the course's git "
@@ -1463,43 +1516,57 @@ msgstr ""
 "课程的ID, 只允许字母、数字、减号, 不能有空格. 它将显示在您的链接中, 并确定该"
 "课程的git仓库放在您的系统中的哪个文件夹下. "
 
-#: .\course\models.py:121
+#: .\course\models.py:123
 msgid "Course identifier"
 msgstr "课程ID"
 
-#: .\course\models.py:127
+#: .\course\models.py:129
 msgid "Identifier may only contain letters, numbers, and hypens ('-')."
 msgstr "Identifier只能包含英文字母, 数字, 和中划线(即减号\"-\"). "
 
-#: .\course\models.py:134
+#: .\course\models.py:136
+msgid "A human-readable name for the course. (e.g. 'Numerical Methods')"
+msgstr "一个易于理解的课程名(例如:'数值方法')."
+
+#: .\course\models.py:141
+msgid "A human-readable course number/ID for the course (e.g. 'CS123')"
+msgstr "一个易于理解的课程编号或ID(例如:'CS123')"
+
+#: .\course\models.py:146
+msgid ""
+"A human-readable description of the time period for the course (e.g. 'Fall "
+"2014')"
+msgstr "一个易于理解的课程周期的表述(例如:'2014年秋季') "
+
+#: .\course\models.py:150
+msgid "Start date"
+msgstr "开始日期"
+
+#: .\course\models.py:153
+msgid "End date"
+msgstr "结束日期"
+
+#: .\course\models.py:158
 msgid "Is the course only accessible to course staff?"
 msgstr "本课程是否只有管理人员才能访问?"
 
-#: .\course\models.py:135
+#: .\course\models.py:159
 msgid "Only visible to course staff"
 msgstr "本课程是否只对课程管理人员显示?"
 
-#: .\course\models.py:138
+#: .\course\models.py:162
 msgid "Should the course be listed on the main page?"
 msgstr "该课程是否放在主页上?"
 
-#: .\course\models.py:139
+#: .\course\models.py:163
 msgid "Listed on main page"
 msgstr "在主页上显示"
 
-#: .\course\models.py:142
+#: .\course\models.py:166
 msgid "Accepts enrollment"
 msgstr "允许申请加入课程"
 
-#: .\course\models.py:145
-msgid "Whether the course content has passed validation."
-msgstr "课程内容是否已通过有效性验证. "
-
-#: .\course\models.py:146
-msgid "Valid"
-msgstr "通过有效性验证"
-
-#: .\course\models.py:149
+#: .\course\models.py:169
 msgid ""
 "A Git URL from which to pull course updates. If you're just starting out, "
 "enter <tt>git://github.com/inducer/relate-sample</tt> to get some sample "
@@ -1508,11 +1575,11 @@ msgstr ""
 "一个git网址, 课程的内容更新将从它pull取得. 如果您刚刚开始使用, 可输入"
 "<tt>git://github.com/inducer/relate-sample</tt>来取得一些示范内容. "
 
-#: .\course\models.py:153
+#: .\course\models.py:173
 msgid "git source"
 msgstr "Git源地址"
 
-#: .\course\models.py:155
+#: .\course\models.py:175
 msgid ""
 "An SSH private key to use for Git authentication. Not needed for the sample "
 "URL above.You may use <a href='/generate-ssh-key'>this tool</a> to generate "
@@ -1522,11 +1589,11 @@ msgstr ""
 "课程不需设置. 你可以使用<a href='/generate-ssh-key'>这个工具</a>来生成一对密"
 "钥. "
 
-#: .\course\models.py:159
+#: .\course\models.py:179
 msgid "SSH private key"
 msgstr "SSH私有密钥"
 
-#: .\course\models.py:162
+#: .\course\models.py:182
 msgid ""
 "Subdirectory *within* the git repository to use as course root directory. "
 "Not required, and usually blank. Use only if your course content lives in a "
@@ -1535,68 +1602,68 @@ msgstr ""
 "一个*在git仓库目录下*的子目录. 一般情况下不要求填写, 除非你的课程内容放git仓"
 "库的某个子目录下. 填写时不要包含斜杠."
 
-#: .\course\models.py:167
+#: .\course\models.py:187
 msgid "Course root in repository"
 msgstr "在仓库下的课程根目录"
 
-#: .\course\models.py:171
+#: .\course\models.py:191
 msgid ""
 "Name of a YAML file in the git repository that contains the root course "
 "descriptor."
 msgstr "git仓库中包含了课程内容描述的YAML文件的文件名, 默认为course.yml. "
 
-#: .\course\models.py:173
+#: .\course\models.py:193
 msgid "Course file"
 msgstr "课程主页文件"
 
-#: .\course\models.py:176
+#: .\course\models.py:196
 msgid ""
 "Name of a YAML file in the git repository that contains calendar information."
 msgstr "git仓库中包含了课程教学日历信息的YAML文件的文件名, 默认为events.yml. "
 
-#: .\course\models.py:178 .\course\validation.py:956
+#: .\course\models.py:198 .\course\validation.py:1035
 msgid "Events file"
 msgstr "events(事件)文件"
 
-#: .\course\models.py:182
+#: .\course\models.py:202
 msgid "If set, each enrolling student must be individually approved."
 msgstr "如果选择该项, 每个加入课程的请求必须单独批准. "
 
-#: .\course\models.py:184
+#: .\course\models.py:204
 msgid "Enrollment approval required"
 msgstr "申请加入课程必须得到批准"
 
-#: .\course\models.py:187
+#: .\course\models.py:207
 msgid ""
 "Enrollee's email addresses must end in the specified suffix, such as "
 "'@illinois.edu'."
 msgstr "申请加入课程的电子邮件必须使用特定的后缀, 比如\"@qq.com\". "
 
-#: .\course\models.py:189
+#: .\course\models.py:209
 msgid "Enrollment required email suffix"
 msgstr "申请加入课程的电子邮件地址必须有的后缀"
 
 #. Translators: replace "RELATE" with the brand name of your
 #. website if necessary.
-#: .\course\models.py:194
+#: .\course\models.py:214
 msgid ""
 "This email address will be used in the 'From' line of automated emails sent "
 "by RELATE."
 msgstr "这个电子邮件地址用于RELATE自动发送电子邮件时的发件人. "
 
-#: .\course\models.py:196
+#: .\course\models.py:216
 msgid "From email"
 msgstr "发送邮件的邮箱"
 
-#: .\course\models.py:199
+#: .\course\models.py:219
 msgid "This email address will receive notifications about the course."
 msgstr "这个电子邮件地址用于接收关于本课程的事务通知. "
 
-#: .\course\models.py:201
+#: .\course\models.py:221
 msgid "Notify email"
 msgstr "接收通知的邮箱"
 
-#: .\course\models.py:206
+#: .\course\models.py:226
 msgid ""
 "(Required only if the instant message feature is desired.) The Jabber/XMPP "
 "ID (JID) the course will use to sign in to an XMPP server."
@@ -1604,106 +1671,106 @@ msgstr ""
 "本课程将使用的Jabber/XMPP ID (JID), 用于登录某个XMPP服务器(仅在需要使用即时通"
 "信功能时才需填写). "
 
-#: .\course\models.py:209
+#: .\course\models.py:229
 msgid "Course xmpp ID"
 msgstr "课程的xmpp ID"
 
-#: .\course\models.py:211
+#: .\course\models.py:231
 msgid ""
 "(Required only if the instant message feature is desired.) The password to "
 "go with the JID above."
 msgstr "以上设置的JID的密码(仅在需要使用即时通信功能时才需填写). "
 
-#: .\course\models.py:213
+#: .\course\models.py:233
 msgid "Course xmpp password"
 msgstr "课程的XMPP密码"
 
-#: .\course\models.py:216
+#: .\course\models.py:236
 msgid ""
 "(Required only if the instant message feature is desired.) The JID to which "
 "instant messages will be sent."
 msgstr "接收即时信息的JID(仅在需要使用即时通信功能时才需填写). "
 
-#: .\course\models.py:218
+#: .\course\models.py:238
 msgid "Recipient xmpp ID"
 msgstr "接收者的xmpp ID"
 
-#: .\course\models.py:224 .\course\models.py:447
+#: .\course\models.py:244 .\course\models.py:471
 msgid "Active git commit SHA"
 msgstr "已启用的git commit SHA"
 
-#: .\course\models.py:231
+#: .\course\models.py:251
 msgid "Courses"
 msgstr "课程"
 
-#: .\course\models.py:258
+#: .\course\models.py:278
 msgid "Kind of event"
 msgstr "event的类型(kind)"
 
 #. Translators: ordinal of event of the same kind
-#: .\course\models.py:261
+#: .\course\models.py:281
 msgid "Ordinal of event"
 msgstr "event的序号(ordinal)"
 
-#: .\course\models.py:263 .\course\models.py:417 .\course\models.py:451
+#: .\course\models.py:283 .\course\models.py:441 .\course\models.py:475
 #: .\course\templates\course\flow-start.html:23
 msgid "Start time"
 msgstr "开始时间"
 
-#: .\course\models.py:265 .\course\models.py:419
+#: .\course\models.py:285 .\course\models.py:443
 msgid "End time"
 msgstr "结束时间"
 
 #. Translators: for when the due time is "All day", how the webpage
 #. of a event is displayed.
-#: .\course\models.py:269
+#: .\course\models.py:289
 msgid ""
 "Only affects the rendering in the class calendar, in that a start time is "
 "not shown"
 msgstr "只会影响课程日历页面的渲染, 其效果为开始时间(start time)不显示. "
 
-#: .\course\models.py:271
+#: .\course\models.py:291
 msgid "All day"
 msgstr "全天"
 
-#: .\course\models.py:274
+#: .\course\models.py:294
 msgid "Shown in calendar"
 msgstr "在日历中显示"
 
-#: .\course\models.py:277
+#: .\course\models.py:297
 msgid "Event"
 msgstr "事件(event)"
 
-#: .\course\models.py:278
+#: .\course\models.py:298
 msgid "Events"
 msgstr "事件(event)"
 
 #. Translators: name format of ParticipationTag
-#: .\course\models.py:301
+#: .\course\models.py:321
 msgid "Format is lower-case-with-hyphens. Do not use spaces."
 msgstr "格式:只允许小写字母与减号, 不允许有空格."
 
-#: .\course\models.py:303
+#: .\course\models.py:323
 msgid "Name of participation tag"
 msgstr "课程参与tag的名称"
 
-#: .\course\models.py:314
+#: .\course\models.py:334
 msgid "Name contains invalid characters."
 msgstr "名称包含无效字符. "
 
-#: .\course\models.py:323
+#: .\course\models.py:343
 msgid "Participation tag"
 msgstr "课程参与标签"
 
-#: .\course\models.py:324
+#: .\course\models.py:344
 msgid "Participation tags"
 msgstr "课程参与标签"
 
-#: .\course\models.py:336
+#: .\course\models.py:356
 msgid "Enroll time"
 msgstr "加入课程时间"
 
-#: .\course\models.py:339
+#: .\course\models.py:359
 msgid ""
 "Instructors may update course content. Teaching assistants may access and "
 "change grade data. Observers may access analytics. Each role includes "
@@ -1713,149 +1780,153 @@ msgstr ""
 "(observer)可以访问评分分析内容. 以上三者, 排在前面的角色拥有排在后面的角色的"
 "权限. "
 
-#: .\course\models.py:343
+#: .\course\models.py:363
 msgid "Participation role"
 msgstr "参与该课程的角色"
 
-#: .\course\models.py:346
+#: .\course\models.py:366
 msgid "Participation status"
 msgstr "课程参与状态"
 
-#: .\course\models.py:351
+#: .\course\models.py:371
 msgid "Multiplier for time available on time-limited flows"
 msgstr "对于有时限的flow,其可用时间的乘数."
 
-#: .\course\models.py:353
+#: .\course\models.py:373
 msgid "Time factor"
 msgstr "时间乘数"
 
-#: .\course\models.py:357
+#: .\course\models.py:377
 msgid "Preview git commit SHA"
 msgstr "预览的git commit SHA"
 
-#: .\course\models.py:360
+#: .\course\models.py:380
 msgid "Tags"
 msgstr "标签"
 
 #. Translators: displayed format of Participation: some user in some
 #. course as some role
-#: .\course\models.py:365
+#: .\course\models.py:385
 #, python-format
 msgid "%(user)s in %(course)s as %(role)s"
 msgstr "%(user)s在课程%(course)s中(作为%(role)s)"
 
-#: .\course\models.py:373 .\course\models.py:438 .\course\models.py:823
-#: .\course\models.py:899 .\course\models.py:1066 .\course\models.py:1339
-#: .\course\models.py:1405 .\course\templates\course\course-base.html:116
+#: .\course\models.py:393 .\course\models.py:462 .\course\models.py:853
+#: .\course\models.py:929 .\course\models.py:1096 .\course\models.py:1369
+#: .\course\models.py:1435 .\course\templates\course\course-base.html:119
 msgid "Participation"
 msgstr "课程参与"
 
-#: .\course\models.py:374
+#: .\course\models.py:394
 msgid "Participations"
 msgstr "课程参与"
 
-#: .\course\models.py:389 .\course\models.py:841 .\course\models.py:904
-#: .\course\models.py:1094 .\course\models.py:1408
+#: .\course\models.py:413 .\course\models.py:871 .\course\models.py:934
+#: .\course\models.py:1124 .\course\models.py:1438
 msgid "Creator"
 msgstr "创建者"
 
-#: .\course\models.py:391 .\course\models.py:843 .\course\models.py:906
-#: .\course\models.py:1024 .\course\models.py:1410
+#: .\course\models.py:415 .\course\models.py:873 .\course\models.py:936
+#: .\course\models.py:1054 .\course\models.py:1440
 msgid "Creation time"
 msgstr "创建时间"
 
 #. Translators: somebody's email in some course in Participation
 #. Preapproval
-#: .\course\models.py:396
+#: .\course\models.py:420
 #, python-format
 msgid "%(email)s in %(course)s"
 msgstr "%(email)s在课程%(course)s中"
 
-#: .\course\models.py:403
+#: .\course\models.py:427
 msgid "Participation preapproval"
 msgstr "用户加入课程预批准"
 
-#: .\course\models.py:404
+#: .\course\models.py:428
 msgid "Participation preapprovals"
 msgstr "用户加入课程预批准"
 
-#: .\course\models.py:421
+#: .\course\models.py:445
 msgid "Cancelled"
 msgstr "已取消的"
 
-#: .\course\models.py:424
+#: .\course\models.py:448
 msgid "Instant flow request"
 msgstr "即时flow"
 
-#: .\course\models.py:425 .\course\templates\course\course-base.html:120
+#: .\course\models.py:449 .\course\templates\course\course-base.html:123
 msgid "Instant flow requests"
 msgstr "即时flow"
 
-#: .\course\models.py:453
+#: .\course\models.py:477
 msgid "Completion time"
 msgstr "完成时间"
 
-#: .\course\models.py:455
+#: .\course\models.py:479
 msgid "Page count"
 msgstr "page数"
 
-#: .\course\models.py:458
+#: .\course\models.py:482
 msgid "In progress"
 msgstr "进行中的"
 
-#: .\course\models.py:465 .\course\templates\course\gradebook-single.html:168
+#: .\course\models.py:489 .\course\templates\course\gradebook-single.html:168
 msgid "Expiration mode"
 msgstr "过期模式"
 
-#: .\course\models.py:474 .\course\models.py:1083
+#: .\course\models.py:498 .\course\models.py:1113
 #: .\course\templates\course\gradebook-single.html:227
 msgid "Points"
 msgstr "分值"
 
-#: .\course\models.py:477
+#: .\course\models.py:501
 msgid "Max point"
 msgstr "满分"
 
-#: .\course\models.py:479
+#: .\course\models.py:503
 msgid "Result comment"
 msgstr "结果评论"
 
-#: .\course\models.py:482 .\course\models.py:545 .\course\models.py:592
-#: .\course\models.py:1100 .\course\templates\course\grade-flow-page.html:58
+#: .\course\models.py:506 .\course\models.py:569 .\course\models.py:622
+#: .\course\models.py:1130 .\course\templates\course\grade-flow-page.html:58
 msgid "Flow session"
 msgstr ""
 
-#: .\course\models.py:483 .\course\templates\course\gradebook-single.html:133
+#: .\course\models.py:507 .\course\templates\course\gradebook-single.html:133
 msgid "Flow sessions"
 msgstr ""
 
-#: .\course\models.py:488
+#: .\course\models.py:512
 #, python-format
 msgid "anonymous session %(session_id)d on '%(flow_id)s'"
 msgstr "flow \"%(flow_id)s\"中匿名的session %(session_id)d "
 
-#: .\course\models.py:492
+#: .\course\models.py:516
 #, python-format
 msgid "%(user)s's session %(session_id)d on '%(flow_id)s'"
 msgstr "%(user)s在flow \"%(flow_id)s\"的session %(session_id)d"
 
-#: .\course\models.py:547
+#: .\course\models.py:571
 msgid "Ordinal"
 msgstr "序号"
 
-#: .\course\models.py:550
+#: .\course\models.py:576
+msgid "Page type as indicated in course content"
+msgstr "课程内容中所确定的Page类型"
+
+#: .\course\models.py:580
 msgid "Group ID"
-msgstr ""
+msgstr "分组ID"
 
-#: .\course\models.py:557
+#: .\course\models.py:587
 msgid "Data"
 msgstr "数据"
 
-#: .\course\models.py:560 .\course\models.py:561
+#: .\course\models.py:590 .\course\models.py:591
 msgid "Flow page data"
 msgstr "flow page的数据"
 
-#: .\course\models.py:565
+#: .\course\models.py:595
 #, python-format
 msgid ""
 "Data for page '%(group_id)s/%(page_id)s' (ordinal %(ordinal)s) in %"
@@ -1863,19 +1934,19 @@ msgid ""
 msgstr ""
 "%(flow_session)s中page %(group_id)s/%(page_id)s(序号为%(ordinal)s)的数据"
 
-#: .\course\models.py:595 .\course\models.py:754
+#: .\course\models.py:625 .\course\models.py:784
 msgid "Page data"
 msgstr "page数据"
 
-#: .\course\models.py:597
+#: .\course\models.py:627
 msgid "Visit time"
 msgstr "访问时间"
 
-#: .\course\models.py:599
+#: .\course\models.py:629
 msgid "Remote address"
 msgstr "来访的ip地址"
 
-#: .\course\models.py:602
+#: .\course\models.py:632
 msgid ""
 "Synthetic flow page visits are generated for unvisited pages once a flow is "
 "finished. This is needed since grade information is attached to a visit, and "
@@ -1884,278 +1955,278 @@ msgstr ""
 "如果一个flow结束,则对未访问的page生成\"合成\"的flow page访问。这是因为评分信"
 "息是附在访问中的,它需要有一个去处。"
 
-#: .\course\models.py:606
+#: .\course\models.py:636
 msgid "Is synthetic"
 msgstr "是否合成"
 
 #. Translators: "Answer" is a Noun.
-#: .\course\models.py:612 .\course\page\code.py:60 .\course\page\text.py:98
+#: .\course\models.py:642 .\course\page\code.py:62 .\course\page\text.py:98
 msgid "Answer"
 msgstr "回答"
 
 #. Translators: determine whether the answer is a final,
 #. submitted answer fit for grading.
-#: .\course\models.py:625
+#: .\course\models.py:655
 msgid "Is submitted answer"
 msgstr "是否为用于评分的回答"
 
 #. Translators: flow page visit
-#: .\course\models.py:630
+#: .\course\models.py:660
 #, python-format
 msgid "'%(group_id)s/%(page_id)s' in '%(session)s' on %(time)s"
 msgstr "在%(time)s时, \"%(session)s'中的'%(group_id)s/%(page_id)s\""
 
 #. Translators: flow page visit: if an answer is
 #. provided by user then append the string.
-#: .\course\models.py:640
+#: .\course\models.py:670
 msgid " (with answer)"
 msgstr "(和回答)"
 
-#: .\course\models.py:648
+#: .\course\models.py:678
 msgid "Flow page visit"
 msgstr "flow page访问"
 
-#: .\course\models.py:649
+#: .\course\models.py:679
 msgid "Flow page visits"
 msgstr "flow page访问"
 
-#: .\course\models.py:676
+#: .\course\models.py:706
 msgid "Visit"
 msgstr "访问"
 
-#: .\course\models.py:680 .\course\templates\course\gradebook-single.html:228
+#: .\course\models.py:710 .\course\templates\course\gradebook-single.html:228
 msgid "Grader"
 msgstr "评分者"
 
-#: .\course\models.py:682 .\course\models.py:1096
+#: .\course\models.py:712 .\course\models.py:1126
 msgid "Grade time"
 msgstr "评分时间"
 
-#: .\course\models.py:686
+#: .\course\models.py:716
 msgid "Graded at git commit SHA"
 msgstr "评分,于git commit SHA"
 
-#: .\course\models.py:691
+#: .\course\models.py:721
 msgid "Grade data"
 msgstr "评分数据"
 
 #. Translators: max point in grade
-#: .\course\models.py:699
+#: .\course\models.py:729
 msgid "Point value of this question when receiving full credit."
 msgstr "该问题取得满分时取得的分值. "
 
 #. Translators: correctness in grade
-#: .\course\models.py:704
+#: .\course\models.py:734
 msgid ""
 "Real number between zero and one (inclusively) indicating the degree of "
 "correctness of the answer."
 msgstr "属于范围[0,1]的数值, 用于表示回答的正确性. "
 
-#: .\course\models.py:706
+#: .\course\models.py:736
 msgid "Correctness"
 msgstr "正确性"
 
 #. Translators: "Feedback" stands for the feedback of answers.
-#: .\course\models.py:717
-#: .\course\templates\course\grade-import-preview.html:20
+#: .\course\models.py:747
+#: .\course\templates\course\grade-import-preview.html:21
 msgid "Feedback"
 msgstr "反馈"
 
-#: .\course\models.py:732
+#: .\course\models.py:762
 msgid "Flow page visit grade"
 msgstr "flow page 访问的得分"
 
-#: .\course\models.py:733
+#: .\course\models.py:763
 msgid "Flow page visit grades"
 msgstr "flow page 访问的得分"
 
 #. Translators: return the information of the grade of a user
 #. by percentage.
-#: .\course\models.py:743
+#: .\course\models.py:773
 #, python-format
 msgid "grade of %(visit)s: %(percentage)s"
 msgstr "%(visit)s的得分(百分比): %(percentage)s"
 
-#: .\course\models.py:756
-#: .\course\templates\course\grade-import-preview.html:19
+#: .\course\models.py:786
+#: .\course\templates\course\grade-import-preview.html:20
 #: .\course\templates\course\gradebook-participant.html:51
 #: .\course\templates\course\gradebook-single.html:74
 msgid "Grade"
 msgstr "得分"
 
-#: .\course\models.py:761
+#: .\course\models.py:791
 msgid "Bulk feedback"
 msgstr "批量反馈"
 
-#: .\course\models.py:797
+#: .\course\models.py:827
 msgid "stipulations must be a dictionary"
 msgstr "规定必须为一个字典型数据,即:(项目, 项目的值)"
 
-#: .\course\models.py:802
+#: .\course\models.py:832
 msgid "unrecognized keys in stipulations"
 msgstr "无法识别的规定"
 
-#: .\course\models.py:808
+#: .\course\models.py:838
 msgid "credit_percent must be a float"
 msgstr "credit_percent必须是一个浮点数"
 
-#: .\course\models.py:814
+#: .\course\models.py:844
 msgid "'allowed_session_count' must be a non-negative integer"
 msgstr "allowed_session_count必须是一个非负的整数"
 
-#: .\course\models.py:827 .\course\models.py:901
+#: .\course\models.py:857 .\course\models.py:931
 msgid "Expiration"
 msgstr "过期"
 
 #. Translators: help text for stipulations in FlowAccessException
 #. (deprecated)
-#: .\course\models.py:832
+#: .\course\models.py:862
 msgid ""
 "A dictionary of the same things that can be added to a flow access rule, "
 "such as allowed_session_count or credit_percent. If not specified here, "
 "values will default to the stipulations in the course content."
 msgstr ""
 
-#: .\course\models.py:838
+#: .\course\models.py:868
 msgid "Stipulations"
 msgstr "条款"
 
 #. Translators: deprecated
-#: .\course\models.py:848
+#: .\course\models.py:878
 msgid ""
 "Check if a flow started under this exception rule set should stay under this "
 "rule set until it is expired."
 msgstr ""
 
 #. Translators: deprecated
-#: .\course\models.py:852
+#: .\course\models.py:882
 msgid "Is sticky"
 msgstr ""
 
 #. Translators: flow access exception in admin (deprecated)
-#: .\course\models.py:860
+#: .\course\models.py:890
 #, python-format
 msgid "Access exception for '%(user)s' to '%(flow_id)s' in '%(course)s'"
 msgstr "对用户\"%(user)s'破例访问课程'%(course)s'中的'%(flow_id)s\". "
 
-#: .\course\models.py:877
+#: .\course\models.py:907
 msgid "Exception"
 msgstr "破例处理"
 
-#: .\course\models.py:880
+#: .\course\models.py:910
 msgid "Permission"
 msgstr "权限"
 
 #. Translators: FlowAccessExceptionEntry (deprecated)
-#: .\course\models.py:884
+#: .\course\models.py:914
 msgid "Flow access exception entries"
 msgstr "破例访问flow的条目"
 
-#: .\course\models.py:913
+#: .\course\models.py:943
 msgid "Kind"
 msgstr "类型"
 
-#: .\course\models.py:915
+#: .\course\models.py:945
 msgid "Rule"
 msgstr "规则"
 
-#: .\course\models.py:918
+#: .\course\models.py:948
 msgctxt "Is the flow rule exception activated?"
 msgid "Active"
 msgstr "生效"
 
 #. Translators: For FlowRuleException
-#: .\course\models.py:923
+#: .\course\models.py:953
 #, python-format
 msgid "%(kind)s exception for '%(user)s' to '%(flow_id)s'in '%(course)s'"
 msgstr "在课程%(course)s的%(flow_id)s中, 给予%(user)s破例的类型%(kind)s"
 
-#: .\course\models.py:939
+#: .\course\models.py:969
 msgid "grading rules may not expire"
 msgstr "评分规则不会过期"
 
-#: .\course\models.py:982
+#: .\course\models.py:1012
 msgid "invalid rule kind: "
 msgstr "无效的规则类型:"
 
-#: .\course\models.py:986
+#: .\course\models.py:1016
 msgid "invalid existing_session_rules: "
 msgstr "无效的existing_session_rules:"
 
-#: .\course\models.py:989
+#: .\course\models.py:1019
 msgid "Flow rule exception"
 msgstr "flow rule破例"
 
-#: .\course\models.py:990
+#: .\course\models.py:1020
 msgid "Flow rule exceptions"
 msgstr "flow rule破例"
 
 #. Translators: format of identifier for GradingOpportunity
-#: .\course\models.py:1003
+#: .\course\models.py:1033
 msgid "A symbolic name for this grade. lower_case_with_underscores, no spaces."
 msgstr "这个评分的字符化名称, 只允许小写字母和下划线, 不允许有空格. "
 
-#: .\course\models.py:1005
+#: .\course\models.py:1035
 msgid "Grading opportunity ID"
 msgstr "得分机会ID"
 
 #. Translators: name for GradingOpportunity
-#: .\course\models.py:1008
+#: .\course\models.py:1038
 msgid "A human-readable identifier for the grade."
 msgstr "一个易于理解的标识, 用于评分. "
 
-#: .\course\models.py:1009
+#: .\course\models.py:1039
 msgid "Grading opportunity name"
 msgstr "得分机会的名称"
 
-#: .\course\models.py:1011
+#: .\course\models.py:1041
 msgid "Flow identifier that this grading opportunity is linked to, if any"
 msgstr "这个评分机会所属的Flow ID, 如果有评分机会的话"
 
 #. Translators: strategy on how the grading of mutiple sessioins
 #. are aggregated.
-#: .\course\models.py:1019 .\course\templates\course\gradebook-by-opp.html:36
+#: .\course\models.py:1049 .\course\templates\course\gradebook-by-opp.html:36
 #: .\course\templates\course\gradebook-opp-list.html:27
 #: .\course\templates\course\gradebook-single.html:121
 msgid "Aggregation strategy"
 msgstr "多session评分累积策略"
 
-#: .\course\models.py:1022 .\course\models.py:1091
-#: .\course\templates\course\gradebook-opp-list.html:28 .\course\views.py:785
+#: .\course\models.py:1052 .\course\models.py:1121
+#: .\course\templates\course\gradebook-opp-list.html:28 .\course\views.py:869
 msgid "Due time"
 msgstr "截止时间"
 
-#: .\course\models.py:1027
+#: .\course\models.py:1057
 msgid "Shown in grade book"
 msgstr "在成绩册中显示"
 
-#: .\course\models.py:1029
+#: .\course\models.py:1059
 msgid "Shown in student grade book"
 msgstr "在在学生的成绩册中显示"
 
-#: .\course\models.py:1032 .\course\models.py:1063
+#: .\course\models.py:1062 .\course\models.py:1093
 msgid "Grading opportunity"
 msgstr "得分机会"
 
-#: .\course\models.py:1033
+#: .\course\models.py:1063
 msgid "Grading opportunities"
 msgstr "得分机会"
 
 #. Translators: For GradingOpportunity
-#: .\course\models.py:1040
+#: .\course\models.py:1070
 #, python-format
 msgid "%(opportunity_name)s (%(opportunity_id)s) in %(course)s"
 msgstr "课程%(course)s中的评分机会%(opportunity_name)s (%(opportunity_id)s) "
 
 #. Translators: something like 'status'.
-#: .\course\models.py:1071 .\course\templates\course\flow-start.html:24
+#: .\course\models.py:1101 .\course\templates\course\flow-start.html:24
 #: .\course\templates\course\gradebook-single.html:141
 #: .\course\templates\course\task-monitor.html:17
 msgid "State"
 msgstr "状态"
 
 #. Translators: help text of "attempt_id" in GradeChange class
-#: .\course\models.py:1076
+#: .\course\models.py:1106
 msgid ""
 "Grade changes are grouped by their 'attempt ID' where later grades with the "
 "same attempt ID supersede earlier ones."
@@ -2163,86 +2234,86 @@ msgstr ""
 "评分的变化是根据它们的\"attempt ID'进行分组, 在相同的'attempt ID\"下, 后面的"
 "评分将覆盖前面的评分. "
 
-#: .\course\models.py:1103
+#: .\course\models.py:1133
 msgid "Grade change"
 msgstr "评分变更"
 
-#: .\course\models.py:1104
+#: .\course\models.py:1134
 msgid "Grade changes"
 msgstr "评分变更"
 
 #. Translators: information for GradeChange
-#: .\course\models.py:1109
+#: .\course\models.py:1139
 #, python-format
 msgid "%(participation)s %(state)s on %(opportunityname)s"
 msgstr "%(opportunityname)s中, %(participation)s %(state)s"
 
-#: .\course\models.py:1121
+#: .\course\models.py:1151
 msgid "Participation and opportunity must live in the same course"
 msgstr "参与(Participation)和评分机会(opportunity)必须属于同一门课程"
 
-#: .\course\models.py:1173
+#: .\course\models.py:1203
 msgid "cannot accept grade once opportunity has been marked 'unavailable'"
 msgstr "一旦评分机会被标记为\"无效(unavailable)\", 将无法进行评分"
 
-#: .\course\models.py:1177
+#: .\course\models.py:1207
 msgid "cannot accept grade once opportunity has been marked 'exempt'"
 msgstr "一旦评分机会被标记为\"剔除(exempt)\", 将无法进行评分"
 
-#: .\course\models.py:1220
+#: .\course\models.py:1250
 #, python-format
 msgid "invalid grade change state '%s'"
 msgstr "无效的评分改变状态 \"%s\""
 
-#: .\course\models.py:1262
+#: .\course\models.py:1292
 #, python-format
 msgid "invalid grade aggregation strategy '%s'"
 msgstr "无效的多session评分累积策略 \"%s\""
 
 #. Translators: display the name of a flow
-#: .\course\models.py:1312
+#: .\course\models.py:1342
 #, python-format
 msgid "Flow: %(flow_desc_title)s"
 msgstr ""
 
-#: .\course\models.py:1341
+#: .\course\models.py:1371
 msgid "Text"
 msgstr "文字"
 
-#: .\course\models.py:1343 .\course\templates\course\gradebook-single.html:71
-#: .\course\views.py:263
+#: .\course\models.py:1373 .\course\templates\course\gradebook-single.html:71
+#: .\course\views.py:268
 msgid "Time"
 msgstr "时间"
 
-#: .\course\models.py:1346
+#: .\course\models.py:1376
 msgid "Instant message"
 msgstr "即时信息"
 
-#: .\course\models.py:1347
+#: .\course\models.py:1377
 msgid "Instant messages"
 msgstr "即时信息"
 
-#: .\course\models.py:1365
+#: .\course\models.py:1395
 msgid "Description"
 msgstr "描述"
 
-#: .\course\models.py:1370
+#: .\course\models.py:1400
 msgid "Currently active"
 msgstr "当前生效"
 
-#: .\course\models.py:1373
+#: .\course\models.py:1403
 msgid "No exams before"
 msgstr "之前未有测验"
 
-#: .\course\models.py:1376
+#: .\course\models.py:1406
 msgid "No exams after"
 msgstr "之后未有测验"
 
-#: .\course\models.py:1380
+#: .\course\models.py:1410
 msgid "Lock down sessions"
 msgstr "锁定session"
 
-#: .\course\models.py:1381
+#: .\course\models.py:1411
 msgid ""
 "Only allow access to exam content (and no other content in this RELATE "
 "instance) in sessions logged in through this exam"
@@ -2250,99 +2321,99 @@ msgstr ""
 "只允许经由此本测验登入的session来访问测验的内容,同时不允许访问本RELATE网站的"
 "其它内容"
 
-#: .\course\models.py:1387 .\course\templates\course\course-base.html:74
+#: .\course\models.py:1417 .\course\templates\course\course-base.html:74
 #: .\relate\templates\base.html:84
 msgid "Exams"
 msgstr "测验"
 
-#: .\course\models.py:1391
+#: .\course\models.py:1421
 #, python-format
 msgid "Exam  %(description)s in %(course)s"
 msgstr "课程%(course)s中的测验: %(description)s"
 
-#: .\course\models.py:1412
+#: .\course\models.py:1442
 msgid "Date and time of first usage of ticket"
-msgstr ""
+msgstr "第一次使用ticket的日期时间"
 
-#: .\course\models.py:1417
+#: .\course\models.py:1447
 msgid "Exam ticket state"
 msgstr "测验ticket的状态"
 
-#: .\course\models.py:1422
+#: .\course\models.py:1452
 msgid "Exam ticket"
 msgstr "测验ticket"
 
-#: .\course\models.py:1423
+#: .\course\models.py:1453
 msgid "Exam tickets"
 msgstr "测验ticket"
 
-#: .\course\models.py:1426
+#: .\course\models.py:1456
 msgid "Can issue exam tickets to student"
 msgstr "可以向学生发布测验ticket"
 
-#: .\course\models.py:1430
+#: .\course\models.py:1460
 #, python-format
 msgid "Exam  ticket for %(participation)s in %(exam)s"
 msgstr "%(participation)s在%(exam)s中的测验ticket."
 
-#: .\course\models.py:1443
+#: .\course\models.py:1473
 msgid "Participation and exam must live in the same course"
 msgstr "参与者和测验必须属于同一门课程"
 
-#: .\course\page\base.py:104
+#: .\course\page\base.py:109
 msgid "Your answer is not correct."
 msgstr "您的回答不正确. "
 
-#: .\course\page\base.py:106
+#: .\course\page\base.py:111
 msgid "Your answer is correct."
 msgstr "您的回答是正确的. "
 
-#: .\course\page\base.py:110
+#: .\course\page\base.py:115
 msgid "Your answer is mostly correct."
 msgstr "您的回答基本正确. "
 
-#: .\course\page\base.py:114
+#: .\course\page\base.py:119
 msgid "No information on correctness of answer."
 msgstr "未知回答正确与否. "
 
-#: .\course\page\base.py:118
+#: .\course\page\base.py:123
 msgid "Your answer is somewhat correct."
 msgstr "您的回答在一定程度上正确. "
 
-#: .\course\page\base.py:147
+#: .\course\page\base.py:152
 msgid "Invalid correctness value"
 msgstr "无效的正确性数值"
 
-#: .\course\page\base.py:536
+#: .\course\page\base.py:541
 #, python-format
 msgid ""
 "PageBaseWithTitle subclass '%s' does not implement markdown_body_for_title()"
 msgstr "PageBaseWithTitle的子类\"%s\"未使用markdown_body_for_title()方法"
 
-#: .\course\page\base.py:546
+#: .\course\page\base.py:551
 msgid "no title found in body or title attribute"
 msgstr "没有在body中找到title,也没有title属性"
 
-#: .\course\page\base.py:590
+#: .\course\page\base.py:595
 msgid "Grade assigned, in percent"
 msgstr "给予的评分(百分比)"
 
-#: .\course\page\base.py:595
+#: .\course\page\base.py:600
 msgid "Grade percent"
 msgstr "得分的百分比"
 
-#: .\course\page\base.py:601
+#: .\course\page\base.py:606
 #, python-format
 msgid ""
 "Grade assigned, as points out of %.1f. Fill out either this or 'grade "
 "percent'."
 msgstr "给予的评分, %.1f分中取得的分值. 填入此项或者\"得分的百分比\". "
 
-#: .\course\page\base.py:608
+#: .\course\page\base.py:613
 msgid "Grade points"
 msgstr "得分的分值"
 
-#: .\course\page\base.py:614
+#: .\course\page\base.py:619
 msgid ""
 "Feedback to be shown to student, using <a href='http://documen.tician.de/"
 "relate/content.html#relate-markup'>RELATE-flavored Markdown</a>"
@@ -2350,21 +2421,21 @@ msgstr ""
 "将反馈给学生的信息, 建议使用<a href='http://documen.tician.de/relate/content."
 "html#relate-markup'>RELATE方式的Markdown模式</a>. "
 
-#: .\course\page\base.py:618
+#: .\course\page\base.py:623
 msgid "Feedback text"
 msgstr "反馈文字"
 
-#: .\course\page\base.py:621
+#: .\course\page\base.py:626
 msgid ""
 "Checking this box and submitting the form will notify the participant with a "
 "generic message containing the feedback text"
 msgstr "勾选此项并提交这个表单, 将会向参与者发送一个包含了反馈信息的消息. "
 
-#: .\course\page\base.py:624
+#: .\course\page\base.py:629
 msgid "Notify"
 msgstr "发送通知"
 
-#: .\course\page\base.py:627
+#: .\course\page\base.py:632
 msgid ""
 "Whether the grade and feedback are to be shown to student. (If you would "
 "like to release all grades at once, do not use this. Instead, use the 'shown "
@@ -2374,34 +2445,34 @@ msgstr ""
 "是否允许学生看到分数和反馈. (如果您希望把所有成绩一次性发布,请不要使用这一"
 "项, 而是在成绩册管理中的'得分机会'中勾选'展示给学生')."
 
-#: .\course\page\base.py:632
+#: .\course\page\base.py:637
 msgid "Released"
 msgstr "已发布"
 
-#: .\course\page\base.py:635
+#: .\course\page\base.py:640
 msgid "Internal notes, not shown to student"
 msgstr "内部注释, 学生不可见"
 
-#: .\course\page\base.py:637
+#: .\course\page\base.py:642
 msgid "Notes"
 msgstr "注释"
 
-#: .\course\page\base.py:650 .\course\page\base.py:664
+#: .\course\page\base.py:655 .\course\page\base.py:669
 msgid "Grade (percent) and Grade (points) disagree"
 msgstr "百分比评分与分值评分不一致"
 
-#: .\course\page\base.py:740
+#: .\course\page\base.py:746
 msgid "New notification"
 msgstr "一条新的通知"
 
-#: .\course\page\base.py:770 .\course\page\choice.py:224
-#: .\course\page\choice.py:334 .\course\page\code.py:530
-#: .\course\page\code.py:833 .\course\page\inline.py:836
-#: .\course\page\text.py:898
+#: .\course\page\base.py:777 .\course\page\choice.py:231
+#: .\course\page\choice.py:364 .\course\page\code.py:531
+#: .\course\page\code.py:834 .\course\page\inline.py:837
+#: .\course\page\text.py:906
 msgid "No answer provided."
 msgstr "未回答. "
 
-#: .\course\page\base.py:792
+#: .\course\page\base.py:799
 msgid "The following feedback was provided"
 msgstr "有以下的反馈信息"
 
@@ -2416,31 +2487,39 @@ msgstr "选项"
 msgid "Choices"
 msgstr "多项选择"
 
-#: .\course\page\choice.py:126 .\course\page\choice.py:446
+#: .\course\page\choice.py:133 .\course\page\choice.py:484
 #: .\course\page\inline.py:421
 #, python-format
 msgid "choice %(idx)d: unable to convert to string"
 msgstr "选项%(idx)d: 无法转换为字符串"
 
-#: .\course\page\choice.py:141
+#: .\course\page\choice.py:148
 #, python-format
 msgid "one or more correct answer(s) expected, %(n_correct)d found"
 msgstr "需要至少1个参考答案,找到%(n_correct)d个"
 
-#: .\course\page\choice.py:238 .\course\page\inline.py:808
-#: .\course\page\text.py:919
+#: .\course\page\choice.py:245 .\course\page\inline.py:809
+#: .\course\page\text.py:927
 msgid "A correct answer is"
 msgstr "参考答案"
 
-#: .\course\page\choice.py:378
+#: .\course\page\choice.py:329
+msgid ""
+"'allow_partial_credit' and 'allow_partial_credit_subset_only' are not "
+"allowed to co-exist when both attribute are 'True'"
+msgstr ""
+"当'allow_partial_credit' 和 'allow_partial_credit_subset_only'都设"
+"为'True'时,两者不能共存."
+
+#: .\course\page\choice.py:415
 msgid "The correct answer is"
 msgstr "正确答案"
 
-#: .\course\page\code.py:613
+#: .\course\page\code.py:614
 msgid "code question execution failed"
 msgstr "编程问题执行失败"
 
-#: .\course\page\code.py:645
+#: .\course\page\code.py:646
 msgid ""
 "The grading code failed. Sorry about that. The staff has been informed, and "
 "if this problem is due to an issue with the grading code, it will be fixed "
@@ -2451,7 +2530,7 @@ msgstr ""
 "动评分的代码引起的,我们将尽快地修复它。同时,你也可以在下面查看traceback信"
 "息,它将帮助你了解是哪里出了问题。"
 
-#: .\course\page\code.py:657
+#: .\course\page\code.py:658
 #, python-format
 msgid ""
 "Your code took too long to execute. The problem specifies that your code may "
@@ -2460,49 +2539,49 @@ msgstr ""
 "你的代码执行时间过长。本问题要求你的代码执行时间不得超过%s秒钟,由于超时所以"
 "代码执行被取消。"
 
-#: .\course\page\code.py:669
+#: .\course\page\code.py:670
 msgid "Your code failed to compile. An error message is below."
 msgstr "你的代码编译失败,下面是错误信息。"
 
-#: .\course\page\code.py:677
+#: .\course\page\code.py:678
 msgid "Your code failed with an exception. A traceback is below."
 msgstr "你的代码执行失败且有一条exception,下面是traceback信息。"
 
-#: .\course\page\code.py:688
+#: .\course\page\code.py:689
 msgid "Here is some feedback on your code"
 msgstr "这是关于你的代码的反馈"
 
-#: .\course\page\code.py:697
+#: .\course\page\code.py:698
 msgid "This is the exception traceback"
 msgstr "这是exception traceback"
 
-#: .\course\page\code.py:703
+#: .\course\page\code.py:704
 msgid "Your code printed the following output"
 msgstr "你的代码打印出以下的输出结果"
 
-#: .\course\page\code.py:710
+#: .\course\page\code.py:711
 msgid "Your code printed the following error messages"
 msgstr "你的代码打印出以下的错误信息"
 
-#: .\course\page\code.py:716
+#: .\course\page\code.py:717
 msgid "Your code produced the following plots"
 msgstr "你的代码得到以下的图"
 
-#: .\course\page\code.py:725
+#: .\course\page\code.py:726
 msgid "Figure"
 msgstr "图"
 
-#: .\course\page\code.py:747
+#: .\course\page\code.py:748
 msgid "The following code is a valid answer"
 msgstr "以下的代码是一个有效的回答"
 
-#: .\course\page\code.py:815
+#: .\course\page\code.py:816
 msgid "human_feedback_value greater than overall value of question"
 msgstr "人工评分(human_feedback_value)大于这个问题的总分值"
 
 #: .\course\page\inline.py:134
 #, python-format
-msgid "unknown embeded question type '%(type)s'"
+msgid "unknown embedded question type '%(type)s'"
 msgstr "未知的嵌入型问题类型\"%(type)s\""
 
 #: .\course\page\inline.py:148
@@ -2523,7 +2602,7 @@ msgstr ""
 "不支持的长度单位'%(length_unit)s', 可使用的长度单位包括%(allowed_length_unit)"
 "s"
 
-#: .\course\page\inline.py:293 .\course\page\text.py:868
+#: .\course\page\inline.py:293 .\course\page\text.py:876
 msgid "at least one answer must be provided"
 msgstr "至少要提供一个回答"
 
@@ -2534,7 +2613,7 @@ msgstr "至少要提供一个回答"
 msgid "answer"
 msgstr "回答"
 
-#: .\course\page\inline.py:326 .\course\page\text.py:883
+#: .\course\page\inline.py:326 .\course\page\text.py:891
 msgid "no matcher is able to provide a plain-text correct answer"
 msgstr "现有的匹配类无法提供一个普通文本型的标准答案"
 
@@ -2545,38 +2624,38 @@ msgid ""
 "(n_correct)d found"
 msgstr "问题'%(question_name)s'至少要有1个答案,找到%(n_correct)d个"
 
-#: .\course\page\inline.py:617
+#: .\course\page\inline.py:628
 #, python-format
 msgid "invalid answers name %s. "
 msgstr "无效的答案名称%s. "
 
-#: .\course\page\inline.py:618 .\course\page\inline.py:636
+#: .\course\page\inline.py:629 .\course\page\inline.py:647
 msgid ""
 "A valid name should start with letters. Alphanumeric with underscores. Do "
 "not use spaces."
 msgstr "一个有效的名称应以字母开头,允许包含数字和下划线, 不允许有空格. "
 
-#: .\course\page\inline.py:635
+#: .\course\page\inline.py:646
 #, python-format
-msgid "invalid embeded question name %s. "
+msgid "invalid embedded question name %s. "
 msgstr "无效的嵌入型问题名称%s. "
 
-#: .\course\page\inline.py:653
+#: .\course\page\inline.py:664
 #, python-format
-msgid "embeded question name %s not unique."
+msgid "embedded question name %s not unique."
 msgstr "嵌入问题的名称%s不是唯一的."
 
-#: .\course\page\inline.py:664
+#: .\course\page\inline.py:675
 #, python-format
 msgid "correct answer(s) not provided for question %s."
 msgstr "未为问题%s提供正确答案. "
 
-#: .\course\page\inline.py:672
+#: .\course\page\inline.py:683
 #, python-format
 msgid "redundant answers %s provided for non-existing question(s)."
 msgstr "为不存在的问题提供了多余的答案%s. "
 
-#: .\course\page\inline.py:700
+#: .\course\page\inline.py:710
 #, python-format
 msgid "have unpaired '%s'."
 msgstr "有未配对的\"%s\"."
@@ -2590,7 +2669,7 @@ msgstr "page必须是\"%s\"类型"
 msgid "unknown validator type"
 msgstr "未知的验证器类型"
 
-#: .\course\page\text.py:186 .\course\page\text.py:587
+#: .\course\page\text.py:186 .\course\page\text.py:595
 msgid "must be struct or string"
 msgstr "必须是一个struct或string型的数据"
 
@@ -2604,11 +2683,15 @@ msgid "unable to check symbolic expression"
 msgstr "无法检查symbolic表达式"
 
 #: .\course\page\text.py:445 .\course\page\text.py:456
-#: .\course\page\text.py:466
+#: .\course\page\text.py:474
 msgid "does not provide a valid float literal"
 msgstr "提供了一个无效的float字符串"
 
-#: .\course\page\text.py:476
+#: .\course\page\text.py:463
+msgid "not allowed when 'value' is zero"
+msgstr "不允许'value'的值为0"
+
+#: .\course\page\text.py:484
 msgid ""
 "Float match should have either rtol or atol--otherwise it will match any "
 "number"
@@ -2618,29 +2701,29 @@ msgstr ""
 #. Translators: a "matcher" is used to determine
 #. if the answer to text question (blank filling
 #. question) is correct.
-#: .\course\page\text.py:534
+#: .\course\page\text.py:542
 #, python-format
 msgid "%(matcherclassname)s only accepts '%(matchertype)s' patterns"
 msgstr "%(matcherclassname)s 只接受 \"%(matchertype)s\" 模式"
 
-#: .\course\page\text.py:546
+#: .\course\page\text.py:554
 #, python-format
 msgid "unknown match type '%(matchertype)s'"
 msgstr "未知的匹配(match)类型\"%(matchertype)s\""
 
-#: .\course\page\text.py:565
+#: .\course\page\text.py:573
 msgid "does not specify match type"
 msgstr "无法确定匹配(match)类型"
 
-#: .\course\page\text.py:573
+#: .\course\page\text.py:581
 msgid "uses deprecated 'matcher:answer' style"
 msgstr "使用了已淘汰了的(deprecated) \"matcher:answer\" 类型"
 
-#: .\course\page\text.py:594
+#: .\course\page\text.py:602
 msgid "matcher must supply 'type'"
 msgstr "matcher必须提供\"type\""
 
-#: .\course\page\text.py:645
+#: .\course\page\text.py:653
 msgid "unrecognized widget type"
 msgstr "无法识别的构件(widget)类型"
 
@@ -2699,7 +2782,7 @@ msgstr "输入flow page的YAML markup. "
 msgid "Page failed to load/validate"
 msgstr "page加载/验证失败"
 
-#: .\course\sandbox.py:299
+#: .\course\sandbox.py:305
 msgid "Submit answer"
 msgstr "提交回答"
 
@@ -2834,11 +2917,11 @@ msgstr ""
 
 #: .\course\templates\course\calendar.html:8
 #: .\course\templates\course\calendar.html:21
-#: .\course\templates\course\course-base.html:101
+#: .\course\templates\course\course-base.html:104
 msgid "Calendar"
 msgstr "教学日历"
 
-#: .\course\templates\course\calendar.html:41
+#: .\course\templates\course\calendar.html:42
 msgid ""
 "<b>Note:</b> Some calendar entries are clickable and link to entries below."
 msgstr "<b>注释:</b> 一些日历的条目是可点击的, 且与其下方的输入内容相链接. "
@@ -2936,61 +3019,65 @@ msgid "Content"
 msgstr "内容管理"
 
 #: .\course\templates\course\course-base.html:90
-msgid "Update course"
-msgstr "更新课程"
+msgid "Retrieve/preview new course revisions"
+msgstr "获取/预览对课程内容的修订"
 
 #: .\course\templates\course\course-base.html:93
+msgid "Edit course"
+msgstr "编辑课程"
+
+#: .\course\templates\course\course-base.html:96
 msgid "Content creation"
 msgstr "内容创建"
 
-#: .\course\templates\course\course-base.html:94
+#: .\course\templates\course\course-base.html:97
 msgid "Page sandbox"
 msgstr "Page沙箱"
 
-#: .\course\templates\course\course-base.html:95
+#: .\course\templates\course\course-base.html:98
 msgid "Markup sandbox"
 msgstr "Markup沙箱"
 
-#: .\course\templates\course\course-base.html:98
+#: .\course\templates\course\course-base.html:101
 msgid "Test flow"
 msgstr "测试flow"
 
-#: .\course\templates\course\course-base.html:103
+#: .\course\templates\course\course-base.html:106
 msgid "Edit events"
 msgstr "编辑event"
 
-#: .\course\templates\course\course-base.html:114
+#: .\course\templates\course\course-base.html:117
 msgctxt "menu item"
 msgid "Instructor"
 msgstr "任课老师"
 
-#: .\course\templates\course\course-base.html:117
+#: .\course\templates\course\course-base.html:120
 msgctxt "menu item"
 msgid "Preapprove enrollments"
 msgstr "加入课程预批准"
 
-#: .\course\templates\course\course-base.html:121
+#: .\course\templates\course\course-base.html:124
 msgid "Manage instant flow requests"
 msgstr "管理即时flow"
 
-#: .\course\templates\course\course-base.html:131
+#: .\course\templates\course\course-base.html:135
 msgid "You are currently seeing a preview of revision"
 msgstr "您正在预览修改后的版本"
 
-#: .\course\templates\course\course-base.html:134
+#: .\course\templates\course\course-base.html:138
 msgid "View revisions"
 msgstr "查看修改版本"
 
-#: .\course\templates\course\course-base.html:143
+#: .\course\templates\course\course-base.html:148
 msgid "There is an interactive activity going on right now."
 msgstr "目前正在进行一项互动活动. "
 
-#: .\course\templates\course\course-base.html:147
-#: .\course\templates\course\course-base.html:154
+#: .\course\templates\course\course-base.html:152
+#: .\course\templates\course\course-base.html:159
 msgid "Go to activity"
 msgstr "转到课程活动"
 
-#: .\course\templates\course\course-base.html:150
+#: .\course\templates\course\course-base.html:155
 msgid "There are some interactive activities going on right now."
 msgstr "目前正在进行一些互动活动. "
 
@@ -2998,26 +3085,20 @@ msgstr "目前正在进行一些互动活动. "
 msgid "Jump to"
 msgstr "转到"
 
-#: .\course\templates\course\course-page.html:18
+#: .\course\templates\course\course-page.html:19
 msgid "This course is only visible to course staff at the moment."
 msgstr "本课程目前只对课程管理人员显示. "
 
-#: .\course\templates\course\course-page.html:20
+#: .\course\templates\course\course-page.html:21
 msgctxt "change the visibility of a course"
 msgid "Change"
 msgstr "修改"
 
-#: .\course\templates\course\course-page.html:25
-msgid ""
-"There may be a problem with the validity of course data, which may lead to "
-"students encountering unexpected errors."
-msgstr "课程数据的验证有很多的问题, 它们可能导致学生碰到各种不可预料的错误. "
-
-#: .\course\templates\course\course-page.html:36
+#: .\course\templates\course\course-page.html:26
 msgid "You're not currently signed in."
 msgstr "您还未登录. "
 
-#: .\course\templates\course\course-page.html:47
+#: .\course\templates\course\course-page.html:37
 msgid "Enroll"
 msgstr "加入课程"
 
@@ -3052,8 +3133,9 @@ msgstr "尊敬的%(username)s: "
 #: .\course\templates\course\email-i18n-tags.txt:14
 #: .\course\templates\course\enrollment-decision-email.txt:12
 #: .\course\templates\course\enrollment-request-email.txt:8
-#: .\course\templates\course\grade-notify.txt:8
+#: .\course\templates\course\grade-notify.txt:13
 #: .\course\templates\course\sign-in-email.txt:11
+#: .\course\templates\course\submit-notify.txt:8
 msgid "- RELATE staff "
 msgstr "- RELATE 课程管理人员"
 
@@ -3204,20 +3286,20 @@ msgstr "回到起始页面"
 msgid "End Session"
 msgstr "结束session"
 
-#: .\course\templates\course\flow-confirm-completion.html:14
+#: .\course\templates\course\flow-confirm-completion.html:15
 msgid "You have left questions unanswered."
 msgstr "您还有问题未回答. "
 
-#: .\course\templates\course\flow-confirm-completion.html:20
+#: .\course\templates\course\flow-confirm-completion.html:21
 #, python-format
 msgid "There were %(total_count)s questions."
 msgstr "总共有%(total_count)s个问题. "
 
-#: .\course\templates\course\flow-confirm-completion.html:24
+#: .\course\templates\course\flow-confirm-completion.html:25
 msgid "You have provided an answer for all of them."
 msgstr "您已经回答了所有问题. "
 
-#: .\course\templates\course\flow-confirm-completion.html:28
+#: .\course\templates\course\flow-confirm-completion.html:29
 #, python-format
 msgid ""
 "You have answered %(answered_count)s and left %(unanswered_count)s "
@@ -3225,89 +3307,104 @@ msgid ""
 msgstr ""
 "您已经回答了%(answered_count)s个问题, 还有%(unanswered_count)s个未回答. "
 
-#: .\course\templates\course\flow-confirm-completion.html:35
+#: .\course\templates\course\flow-confirm-completion.html:36
 msgid "If you choose to end your session, the following things will happen:"
 msgstr "如果您选择结束这个session, 将发生以下的事情:"
 
-#: .\course\templates\course\flow-confirm-completion.html:37
+#: .\course\templates\course\flow-confirm-completion.html:38
 msgid "You will be prevented from making further changes to your answers."
 msgstr "您将无法修改您的回答. "
 
-#: .\course\templates\course\flow-confirm-completion.html:38
+#: .\course\templates\course\flow-confirm-completion.html:39
 msgid ""
 "All your currently saved answers, if not graded already, will be graded."
 msgstr "您当前保存的答案, 如果还未被评分, 将会被评分. "
 
-#: .\course\templates\course\flow-confirm-completion.html:39
+#: .\course\templates\course\flow-confirm-completion.html:40
 msgid ""
 "If possible, a final grade will be computed from all saved, graded answers."
 msgstr "如果可能, 所有已保存的、已评分的结果将会得到一个最终的评分. "
 
-#: .\course\templates\course\flow-confirm-completion.html:48
+#: .\course\templates\course\flow-confirm-completion.html:49
 msgid "Go back"
 msgstr "返回"
 
-#: .\course\templates\course\flow-confirm-completion.html:50
+#: .\course\templates\course\flow-confirm-completion.html:51
 msgid "Confirm: Submit answers and end session"
 msgstr "确定:提交所有回答并结束本session"
 
 #: .\course\templates\course\flow-page.html:25
 #: .\course\templates\course\flow-page.html:29
-msgctxt "Preivious page/item in a flow"
+msgctxt "Previous page/item in a flow"
 msgid "Previous"
 msgstr "上一页"
 
 #: .\course\templates\course\flow-page.html:34
+#: .\course\templates\course\flow-page.html:38
 msgctxt "Next page/item in a flow"
 msgid "Next"
 msgstr "下一页"
 
-#: .\course\templates\course\flow-page.html:40
+#: .\course\templates\course\flow-page.html:45
 msgid "Go to end"
 msgstr "跳转至最末"
 
-#: .\course\templates\course\flow-page.html:44
-#: .\course\templates\course\flow-page.html:48
+#: .\course\templates\course\flow-page.html:49
+#: .\course\templates\course\flow-page.html:53
 msgid "Finish"
 msgstr "结束"
 
-#: .\course\templates\course\flow-page.html:46
+#: .\course\templates\course\flow-page.html:51
 msgid "Submit for grading"
-msgstr "提交以评分"
+msgstr "提交session并评分"
+
+#: .\course\templates\course\flow-page.html:63
+msgid "Past submissions"
+msgstr "过往的提交记录"
+
+#: .\course\templates\course\flow-page.html:79
+msgid "(current)"
+msgstr "(当前的)"
+
+#: .\course\templates\course\flow-page.html:82
+msgid "(submitted)"
+msgstr "(已提交的)"
 
 #. Translators: the string is followed by "what will happen" at deadline.
-#: .\course\templates\course\flow-page.html:59
+#: .\course\templates\course\flow-page.html:97
+#: .\course\templates\course\impersonate-form.html:16
 msgid "At deadline:"
 msgstr "当截止时:"
 
-#: .\course\templates\course\flow-page.html:94
+#: .\course\templates\course\flow-page.html:132
 msgid "Session duration:"
 msgstr "session的时间长度:"
 
-#: .\course\templates\course\flow-page.html:96
+#: .\course\templates\course\flow-page.html:134
 msgid "minutes"
 msgstr "分钟"
 
-#: .\course\templates\course\flow-page.html:99
+#: .\course\templates\course\flow-page.html:137
 msgid "Time factor:"
 msgstr "时间乘数:"
 
-#: .\course\templates\course\flow-page.html:109
+#: .\course\templates\course\flow-page.html:147
 #, python-format
 msgid "%(max_points)s point"
 msgid_plural "%(max_points)s points"
 msgstr[0] "%(max_points)s分"
 msgstr[1] "%(max_points)s分"
 
-#: .\course\templates\course\flow-page.html:129
+#: .\course\templates\course\flow-page.html:167
 msgid "(You may still change your answer after you submit it.)"
 msgstr "(您仍然可以在提交<b>本问题</b>后修改回答)"
 
-#: .\course\templates\course\flow-page.html:202
+#: .\course\templates\course\flow-page.html:240
 msgid "You have unsaved changes on this page."
 msgstr "您在本页还有未保存的修订. "
 
-#: .\course\templates\course\flow-page.html:260
+#: .\course\templates\course\flow-page.html:311
+#: .\course\templates\course\impersonate-form.html:81
 msgid "Saved."
 msgstr "已保存"
 
@@ -3411,16 +3508,16 @@ msgstr "我已经知道开始一个新的session将有可能降低我的总体
 msgid "I am sure"
 msgstr "我确认"
 
-#: .\course\templates\course\flow-start.html:175
+#: .\course\templates\course\flow-start.html:184
 msgid ""
 "You do not have any existing sessions and are not allowed to start a new one."
 msgstr "您没有可以开始的session,不允许开始一个新session. "
 
-#: .\course\templates\course\flow-start.html:182
+#: .\course\templates\course\flow-start.html:191
 msgid "Check the following:"
 msgstr "检查以下项目:"
 
-#: .\course\templates\course\flow-start.html:188
+#: .\course\templates\course\flow-start.html:197
 #, python-format
 msgid ""
 "You're not currently signed in. Access to the resource is restricted, and "
@@ -3432,11 +3529,11 @@ msgstr ""
 "旦您登录了网站,请通过 <b><a href=\"%(relate-home)s\">主页</a></b> 返回课程页"
 "面,然后尝试您的上一次操作。"
 
-#: .\course\templates\course\flow-start.html:199
+#: .\course\templates\course\flow-start.html:208
 msgid "Has the deadline for this assignment passed?"
 msgstr "作业的截止时间是否已经过了?"
 
-#: .\course\templates\course\flow-start.html:202
+#: .\course\templates\course\flow-start.html:211
 #: .\relate\templates\403.html:27
 msgid ""
 "Complete your enrollment in your course. If you're not enrolled, a large "
@@ -3446,7 +3543,7 @@ msgstr ""
 "请完成您的加入课程申请.  如果您还未加入, 在课程页面上有一个<b>“加入课程申"
 "请”</b>的按钮, 点击它, 并按指示步骤操作, 然后再重试您刚才的操作. "
 
-#: .\course\templates\course\flow-start.html:210
+#: .\course\templates\course\flow-start.html:219
 #: .\relate\templates\403.html:34
 #, python-format
 msgid ""
@@ -3524,7 +3621,7 @@ msgstr ", 评分者为%(grader_name)s"
 msgid "at %(grade_time)s"
 msgstr ", 评分时间为%(grade_time)s"
 
-#: .\course\templates\course\grade-flow-page.html:131 .\course\views.py:592
+#: .\course\templates\course\grade-flow-page.html:131 .\course\views.py:674
 msgid "Session"
 msgstr ""
 
@@ -3536,25 +3633,29 @@ msgstr "开始:"
 msgid "Page number"
 msgstr "Page编号"
 
-#: .\course\templates\course\grade-flow-page.html:235
+#: .\course\templates\course\grade-flow-page.html:159
+msgid "View in flow"
+msgstr "在flow中查看"
+
+#: .\course\templates\course\grade-flow-page.html:237
 msgid "Enter new feedback item:"
 msgstr "输入新的反馈项目:"
 
-#: .\course\templates\course\grade-flow-page.html:283
+#: .\course\templates\course\grade-flow-page.html:285
 msgid "Add phrase"
 msgstr "添加阶段"
 
-#: .\course\templates\course\grade-flow-page.html:285
-#: .\course\templates\course\grade-flow-page.html:310
-#: .\course\templates\course\grade-flow-page.html:346
+#: .\course\templates\course\grade-flow-page.html:287
+#: .\course\templates\course\grade-flow-page.html:312
+#: .\course\templates\course\grade-flow-page.html:348
 msgid "Clear"
 msgstr "清除"
 
-#: .\course\templates\course\grade-flow-page.html:392
+#: .\course\templates\course\grade-flow-page.html:394
 msgid "Submit and next page"
 msgstr "提交并转到下一页"
 
-#: .\course\templates\course\grade-flow-page.html:397
+#: .\course\templates\course\grade-flow-page.html:399
 msgid "Submit and next session"
 msgstr "提交并转到下一个session"
 
@@ -3562,19 +3663,25 @@ msgstr "提交并转到下一个session"
 #, python-format
 msgid ""
 "\n"
-"You have a new notification regarding your work on the problem with title %"
-"(page_title)s in %(flow_id)s of %(course_identifier)s. The full text of the "
-"feedback follows.\n"
+"You have a new notification regarding your work on the page with title\n"
+"'%(page_title)s' in '%(flow_id)s' of '%(course_identifier)s'. The\n"
+"full text of the feedback follows.\n"
 "-------------------------------------------------------------------\n"
 "%(feedback_text)s\n"
 "-------------------------------------------------------------------\n"
+"Click here to review the feedback in context:\n"
+"%(review_uri)s\n"
+"\n"
 msgstr ""
 "\n"
-"    您有一个新的通知, 是关于您在标题为%(page_title)s的问题的回答(%"
+"    您有一个新的通知, 是关于您在标题为%(page_title)s的页面的回答(%"
 "(course_identifier)s课程的%(flow_id)s). 反馈信息的全文如下:\n"
 "-------------------------------------------------------------------\n"
 "%(feedback_text)s\n"
 "-------------------------------------------------------------------\n"
+"点击以下链在问题页面中查看反馈:\n"
+"%(review_uri)s\n"
+"\n"
 
 #: .\course\templates\course\gradebook-by-opp.html:30
 #: .\course\templates\course\gradebook-single.html:27
@@ -3629,15 +3736,6 @@ msgstr ""
 msgid "Sessions"
 msgstr ""
 
-#. Translators: Username displayed in gradebook by opportunity
-#. Translators: how the real name of a user is displayed.
-#: .\course\templates\course\gradebook-by-opp.html:111
-#: .\course\templates\course\gradebook-participant.html:39
-#: .\course\templates\course\gradebook.html:36
-#, python-format
-msgid "%(last_name)s, %(first_name)s"
-msgstr "%(last_name)s%(first_name)s"
-
 #: .\course\templates\course\gradebook-by-opp.html:140
 msgid "Rules tag"
 msgstr "规则tag"
@@ -3804,24 +3902,24 @@ msgid "Learn more"
 msgstr "了解更多"
 
 #: .\course\templates\course\home.html:21
-msgid "The course content has not yet been validated."
-msgstr "课程内容尚未验证. "
-
-#: .\course\templates\course\home.html:24
 msgid "View"
 msgstr "查看"
 
-#: .\course\templates\course\home.html:31
+#: .\course\templates\course\home.html:27
+msgid "Past Courses"
+msgstr "已结束的课程"
+
+#: .\course\templates\course\home.html:51
 #, python-format
 msgid "There are no courses hosted on this %(RELATE)s site."
 msgstr "本(%(RELATE)s)网站还没有挂载课程. "
 
-#: .\course\templates\course\home.html:34
+#: .\course\templates\course\home.html:54
 #, python-format
 msgid "<a href=\"%(relate-sign_in_by_user_pw)s\">Sign in</a> to get started."
 msgstr "<a href=\"%(relate-sign_in_by_user_pw)s\">登录</a> 以开始使用. "
 
-#: .\course\templates\course\home.html:41 .\course\versioning.py:312
+#: .\course\templates\course\home.html:61 .\course\versioning.py:339
 msgid "Set up new course"
 msgstr "设置新课程"
 
@@ -3839,17 +3937,17 @@ msgid ""
 "the database:"
 msgstr "发现课程内容中以下的events并未列入数据库中:"
 
-#: .\course\templates\course\invalid-datespec-list.html:25
+#: .\course\templates\course\invalid-datespec-list.html:26
 msgid "Unrecognized events were found."
 msgstr "发现无法识别的events. "
 
-#: .\course\templates\course\invalid-datespec-list.html:29
+#: .\course\templates\course\invalid-datespec-list.html:30
 msgid ""
 "Check the \"Calendar\" functions in the instructor menu to add the missing "
 "labels."
 msgstr "检查“任课老师”菜单中的“课程日程”功能以添加缺失的标签. "
 
-#: .\course\templates\course\invalid-datespec-list.html:37
+#: .\course\templates\course\invalid-datespec-list.html:39
 msgid "No unrecognized events were found."
 msgstr "没有可识别的events. "
 
@@ -3886,7 +3984,7 @@ msgstr "登录 或 新建帐户"
 #. Translators: For courses which require specific email suffix for enrollment, translate the following literals
 #. with your customized email suffix.
 #.
-#: .\course\templates\course\login-by-email.html:16
+#: .\course\templates\course\login-by-email.html:17
 msgid ""
 "Please use the <em>official</em> email address associated with the "
 "university or school at which this course is taking place. Some courses may "
@@ -3895,7 +3993,7 @@ msgstr ""
 "某些课程要求用特定的电子邮件后缀(例如“@scut.edu.cn”)用于申请课程, 请与课程管"
 "理人员确认. 如果是这样, 请使用指定的 <em>官方</em> 电子邮箱. "
 
-#: .\course\templates\course\login-by-email.html:25
+#: .\course\templates\course\login-by-email.html:27
 #, python-format
 msgid ""
 "If you have a user name and a password, you should use the <a href=\"%"
@@ -3904,7 +4002,7 @@ msgstr ""
 "如果您有用户名和密码,您应该使用 <a href='%(relate-sign_in_by_user_pw)s'>用户"
 "名+密码的方式</a> 登录. "
 
-#: .\course\templates\course\login.html:12
+#: .\course\templates\course\login.html:13
 #, python-format
 msgid ""
 "If you have a not been assigned a password, you should use the <a href='%"
@@ -3913,13 +4011,13 @@ msgstr ""
 "如果您还没有密码,您应使用 <a href='%(student_sign_in_view)s'>标准登录方式</"
 "a> 登录. "
 
-#: .\course\templates\course\login.html:20
+#: .\course\templates\course\login.html:22
 #, python-format
 msgid ""
 "If you do not have an account, <a href='%(relate-sign_up)s'>sign up</a>."
 msgstr "如果您还没有帐号,请 <a href='%(relate-sign_up)s'>注册</a> . "
 
-#: .\course\templates\course\login.html:25
+#: .\course\templates\course\login.html:27
 #, python-format
 msgid ""
 "If you do not remember your password, <a href=\"%(relate-reset_password)s\"> "
@@ -3969,11 +4067,11 @@ msgid ""
 "make sure to retain a copy."
 msgstr "一旦您离开这个页面,您输入的内容将不会保存, 请保证您保留了一个副本. "
 
-#: .\course\templates\course\sandbox-page.html:39
+#: .\course\templates\course\sandbox-page.html:41
 msgid "Warnings were encountered when validating the page:"
 msgstr "验证页面时遇到了如下的警告:"
 
-#: .\course\templates\course\sandbox-page.html:87
+#: .\course\templates\course\sandbox-page.html:89
 msgid "(Page preview appears here)"
 msgstr "(在这里预览Page)"
 
@@ -3998,6 +4096,33 @@ msgstr ""
 "%(home_uri)s\n"
 "输入了您的电子邮件. 如果不是您操作的, 可忽略此邮件. \n"
 
+#: .\course\templates\course\submit-notify.txt:1
+#, python-format
+msgid "Dear course staff of %(course_identifier)s,"
+msgstr "尊敬的%(course_identifier)s课程管理人员,"
+
+#: .\course\templates\course\submit-notify.txt:3
+#, python-format
+msgid "Participant '%(participant)s'"
+msgstr "学员 '%(participant)s'"
+
+#: .\course\templates\course\submit-notify.txt:3
+msgid "A participant"
+msgstr "一位学员"
+
+#: .\course\templates\course\submit-notify.txt:3
+#, python-format
+msgid ""
+" has just submitted his/her work on '%(flow_id)s'.\n"
+"\n"
+"Click here to review it:\n"
+"%(review_uri)s\n"
+msgstr ""
+"刚刚提交了在其'%(flow_id)s'上的工作.\n"
+"\n"
+"请点击以下链接来审阅:\n"
+"%(review_uri)s\n"
+
 #: .\course\templates\course\task-monitor.html:12
 msgid "Task Progress"
 msgstr "任务进程"
@@ -4010,15 +4135,15 @@ msgstr "进程"
 msgid "The process failed and reported the following error:"
 msgstr "该过程进行失败,并报告了以下错误:"
 
-#: .\course\utils.py:341
+#: .\course\utils.py:345
 msgid "grading rule determination was unable to find a grading rule"
 msgstr "无法为评分找到规则"
 
-#: .\course\utils.py:579
+#: .\course\utils.py:583
 msgid "Press F9 to toggle full-screen mode. "
 msgstr "按F9以打开/关闭全屏模式. "
 
-#: .\course\utils.py:580
+#: .\course\utils.py:584
 #, python-format
 msgid "Set editor mode in <a href='%s'>user profile</a>."
 msgstr "在 <a href='%s'>用户信息</a> 中设置编辑器模式. "
@@ -4032,105 +4157,126 @@ msgstr "无效的identifier"
 msgid "invalid role '%(role)s'"
 msgstr "无效的角色 \"%(role)s\""
 
-#: .\course\validation.py:117
+#: .\course\validation.py:93
+#, python-format
+msgid ""
+"Name of facility not recognized: '%(fac_name)s'. Known facility names: '%"
+"(known_fac_names)s'"
+msgstr ""
+"教学设施名称无法识别: '%(fac_name)s'. 已知的教学设施名包括: '%"
+"(known_fac_names)s'"
+
+#: .\course\validation.py:133
 #, python-format
 msgid "attribute '%(attr)s' missing"
 msgstr "缺少\"%(attr)s\"属性"
 
-#: .\course\validation.py:135
+#: .\course\validation.py:151
 #, python-format
 msgid ""
 "attribute '%(attr)s' has wrong type: got '%(name)s', expected '%(allowed)s'"
 msgstr "属性\"%(attr)s\"的类型错误: 设置为\"%(name)s\", 应该为\"%(allowed)s\""
 
-#: .\course\validation.py:150
+#: .\course\validation.py:166
 #, python-format
 msgid "extraneous attribute(s) '%(attr)s'"
 msgstr "冗余的外部属性 \"%(attr)s\""
 
-#: .\course\validation.py:252
+#: .\course\validation.py:271
 msgid "Uses deprecated 'start' attribute--use 'if_after' instead"
 msgstr "使用了已淘汰的(deprecated)\"start'属性 -- 建议改为使用'if_after\""
 
-#: .\course\validation.py:258
+#: .\course\validation.py:277
 msgid "Uses deprecated 'end' attribute--use 'if_before' instead"
 msgstr "使用了已淘汰的(deprecated)\"end'属性 -- 建议改为使用'if_before\""
 
-#: .\course\validation.py:264
+#: .\course\validation.py:283
 msgid "Uses deprecated 'roles' attribute--use 'if_has_role' instead"
 msgstr "使用了已淘汰的(deprecated)\"roles'属性 -- 建议改为使用'if_has_role\""
 
-#: .\course\validation.py:324
+#: .\course\validation.py:330
+msgid "'name' is deprecated. This information is now kept in the database."
+msgstr "'name'已经淘汰. 这部分信息现在存在数据库中."
+
+#: .\course\validation.py:333
+msgid "'number' is deprecated. This information is now kept in the database."
+msgstr "'number'已经淘汰. 这部分信息现在存在数据库中."
+
+#: .\course\validation.py:336
+msgid "'run' is deprecated. This information is now kept in the database."
+msgstr "'run'已经淘汰. 这部分信息现在存在数据库中."
+
+#: .\course\validation.py:354
 #, python-format
 msgid "chunk id '%(chunkid)s' not unique"
 msgstr "chunk id \"%(chunkid)s\" 应是唯一的"
 
-#: .\course\validation.py:341
+#: .\course\validation.py:371
 msgid "flow page has no ID"
 msgstr "flow page没有ID"
 
-#: .\course\validation.py:359
+#: .\course\validation.py:389
 msgid "could not instantiate flow page"
 msgstr "无法初始化flow page"
 
-#: .\course\validation.py:395
+#: .\course\validation.py:425
 #, python-format
 msgid "group '%(group_id)s': group is empty"
 msgstr "group \"%(group_id)s\": group 是空的"
 
-#: .\course\validation.py:402
+#: .\course\validation.py:432
 #, python-format
 msgid "group '%(group_id)s': max_page_count is not positive"
 msgstr "group \"%(group_id)s\": max_page_count 不是正数"
 
-#: .\course\validation.py:415
+#: .\course\validation.py:445
 #, python-format
 msgid "page id '%(page_desc_id)s' not unique"
 msgstr "page id \"%(page_desc_id)s\" 应是唯一的"
 
-#: .\course\validation.py:464
+#: .\course\validation.py:497
 msgid "attribute 'may_start_new_session' is not present"
 msgstr "没有找到\"may_start_new_session\"属性"
 
-#: .\course\validation.py:468
+#: .\course\validation.py:501
 msgid "attribute 'may_list_existing_sessions' is not present"
 msgstr "没有找到\"may_list_existing_sessions\"属性"
 
-#: .\course\validation.py:480 .\course\validation.py:521
-#: .\course\validation.py:604
+#: .\course\validation.py:513 .\course\validation.py:558
+#: .\course\validation.py:641
 #, python-format
 msgid "invalid tag '%(tag)s'"
 msgstr "无效的 tag \"%(tag)s\""
 
-#: .\course\validation.py:530
+#: .\course\validation.py:567
 #, python-format
 msgid "invalid expiration mode '%(expiremode)s'"
 msgstr "无效的过期模式 \"%(expiremode)s\""
 
-#: .\course\validation.py:571
+#: .\course\validation.py:608
 msgid ""
 "'grade_identifier' attribute found. This attribute is no longer allowed here "
 "and should be moved upward into the 'rules' block."
 msgstr ""
 
-#: .\course\validation.py:580
+#: .\course\validation.py:617
 msgid ""
 "'grade_aggregation_strategy' attribute found. This attribute is no longer "
 "allowed here and should be moved upward into the 'rules' block."
 msgstr ""
 
-#: .\course\validation.py:615
+#: .\course\validation.py:652
 msgid "'generates_grade' is true, but no 'grade_identifier'is given."
 msgstr ""
 
-#: .\course\validation.py:644
+#: .\course\validation.py:681
 msgid ""
 "'rules' block does not have a grade_identifier attribute. This attribute "
 "needs to be moved out of the lower-level 'grading' rules block and into the "
 "'rules' block itself."
 msgstr ""
 
-#: .\course\validation.py:683
+#: .\course\validation.py:720
 #, python-format
 msgid ""
 "grading rule that have a grade identifier (%(type)s: %(identifier)s) must "
@@ -4138,23 +4284,23 @@ msgid ""
 msgstr ""
 "设置了(%(type)s %(identifier)s)的评分规则, 必须有grade_aggregation_strategy"
 
-#: .\course\validation.py:699
+#: .\course\validation.py:736
 msgid "invalid grade aggregation strategy"
 msgstr "无效的多session评分累积策略"
 
-#: .\course\validation.py:710
+#: .\course\validation.py:747
 msgid "'grading' block is required if grade_identifier is not null/None."
 msgstr ""
 
-#: .\course\validation.py:721
+#: .\course\validation.py:758
 msgid "rules/grading: may not be an empty list"
 msgstr ""
 
-#: .\course\validation.py:736
+#: .\course\validation.py:773
 msgid "rules/grading: last grading rule must be unconditional"
 msgstr "rules/grading: 最后一个grading rule必须是无条件的"
 
-#: .\course\validation.py:746
+#: .\course\validation.py:783
 msgid ""
 "Uses deprecated 'modify' permission--replace by 'submit_answer' and "
 "'end_session'"
@@ -4162,7 +4308,7 @@ msgstr ""
 "使用了已淘汰的(deprecated)权限\"modify\" -- 请改为"
 "\"submit_answer'和'end_session\""
 
-#: .\course\validation.py:752
+#: .\course\validation.py:789
 msgid ""
 "Uses deprecated 'see_answer' permission--replace by "
 "'see_answer_after_submission'"
@@ -4170,36 +4316,45 @@ msgstr ""
 "使用了已淘汰的(deprecated)权限\"see_answer\" -- 请改为"
 "\"see_answer_after_submission\""
 
-#: .\course\validation.py:759
+#: .\course\validation.py:796
 #, python-format
 msgid "invalid flow permission '%(permission)s'"
 msgstr "无效的flow权限 \"%(permission)s\""
 
-#: .\course\validation.py:793
+#: .\course\validation.py:831
 msgid "must have either 'groups' or 'pages'"
 msgstr "必须有'groups'或'pages'"
 
-#: .\course\validation.py:819
+#: .\course\validation.py:857
 #, python-format
 msgid "group %(group_index)d ('%(group_id)d'): no pages found"
 msgstr "group %(group_index)d (%(group_id)d): 找不到page"
 
-#: .\course\validation.py:827
+#: .\course\validation.py:865
 #, python-format
 msgid "%s: no pages found"
 msgstr "%s: 找不到page"
 
-#: .\course\validation.py:840
+#: .\course\validation.py:878
 #, python-format
 msgid "group id '%(group_id)s' not unique"
 msgstr "group id \"%(group_id)s\" 应该是唯一的"
 
-#: .\course\validation.py:957
+#: .\course\validation.py:1005
+#, python-format
+msgid ""
+"%(loc)s, group '%(group)s', page '%(page)s': page type ('%(type_new)s') "
+"differs from type used in database ('%(type_old)s')"
+msgstr ""
+"%(loc)s, group '%(group)s', page '%(page)s': page type ('%(type_new)s') 与数"
+"据库中使用的type不同 ('%(type_old)s')"
+
+#: .\course\validation.py:1036
 #, python-format
 msgid "Your course repository does not have an events file named '%s'."
 msgstr "您课程的仓库中并不包含一个名为'%s'的事件文件."
 
-#: .\course\validation.py:977
+#: .\course\validation.py:1056
 msgid ""
 "Your course repository has a 'media/' directory. Linking to media files "
 "using 'media:' is discouraged. Use the 'repo:' and 'repocur:' linkng schemes "
@@ -4208,259 +4363,284 @@ msgstr ""
 "你课程的仓库中有一个'media/'目录. 不建议使用'media:'来链接到媒体文件. 建议改"
 "为使用'repo:'和'repocur:'来链接到你的方案(schemes)."
 
-#: .\course\validation.py:1000
+#: .\course\validation.py:1079
 msgid ""
 "invalid flow name. Flow names may only contain (roman) letters, numbers, "
 "dashes and underscores."
 msgstr "无效的flow名称. flow的名称只能有英文字母、数字、减号和下划线. "
 
-#: .\course\validation.py:1025
+#: .\course\validation.py:1104
 msgid "flow uses the same grade_identifier as another flow"
 msgstr "本flow使用了与另一个flow相同的grade_identifier"
 
-#: .\course\validation.py:1124
+#: .\course\validation.py:1207
 msgid "WARNINGS: "
 msgstr "警告:"
 
-#: .\course\versioning.py:198
+#: .\course\versioning.py:223
 msgid "Validate and create"
 msgstr "验证并创建课程"
 
-#: .\course\versioning.py:204
+#: .\course\versioning.py:229
 msgid "only staff may create courses"
 msgstr "只有课程管理人员(staff)及以上才能创建课程"
 
-#: .\course\versioning.py:261
+#: .\course\versioning.py:288
 msgid "Course content validated, creation succeeded."
 msgstr "课程内容有效性验证完成, 创建成功. "
 
-#: .\course\versioning.py:287
+#: .\course\versioning.py:314
 #, python-format
 msgid "Failed to delete unused repository directory '%s'."
 msgstr "无法删除未使用的代码仓库目录\"%s\"."
 
-#: .\course\versioning.py:299
+#: .\course\versioning.py:326
 msgid "Course creation failed"
 msgstr "课程创建失败"
 
-#: .\course\versioning.py:348
+#: .\course\versioning.py:375
 msgid "no git source URL specified"
 msgstr "未设定git源的URL"
 
-#: .\course\versioning.py:360
+#: .\course\versioning.py:388
 msgid "fetch would discard commits, refusing"
 msgstr "fetch将会放弃修改, 拒绝fetch"
 
-#: .\course\versioning.py:364
+#: .\course\versioning.py:392
 msgid "Fetch successful."
 msgstr "fetch成功. "
 
-#: .\course\versioning.py:373
+#: .\course\versioning.py:401
 msgid "Preview ended."
 msgstr "预览已结束. "
 
-#: .\course\versioning.py:388
+#: .\course\versioning.py:416
 #, python-format
 msgid "Course content did not validate successfully. (%s) Update not applied."
 msgstr "课程内容有效性验证不成功, (%s) 未应用更新. "
 
-#: .\course\versioning.py:395
+#: .\course\versioning.py:423
 msgid "Course content validated successfully."
 msgstr "课程内容有效性验证成功. "
 
-#: .\course\versioning.py:399
+#: .\course\versioning.py:427
 msgid "Course content validated OK, with warnings: "
 msgstr "课程内容有效性验证成功, 但有警告信息:"
 
-#: .\course\versioning.py:410
+#: .\course\versioning.py:438
 msgid "Preview activated."
 msgstr "预览状态已激活. "
 
-#: .\course\versioning.py:421
+#: .\course\versioning.py:448
 msgid "Update applied. "
 msgstr "更新已应用. "
 
-#: .\course\versioning.py:424 .\course\versioning.py:496 .\course\views.py:681
+#: .\course\versioning.py:451 .\course\versioning.py:548 .\course\views.py:765
 msgid "invalid command"
 msgstr "无效的命令"
 
-#: .\course\versioning.py:431
+#: .\course\versioning.py:484
 msgctxt "new git SHA for revision of course contents"
 msgid "New git SHA"
 msgstr "新的git SHA"
 
-#: .\course\versioning.py:433
+#: .\course\versioning.py:487
 msgid "Prevent updating to a git revision prior to the current one"
 msgstr "防止更新到当前git修订版本之前的版本."
 
-#: .\course\versioning.py:444
+#: .\course\versioning.py:495
 msgid "Fetch and update"
 msgstr "fetch并更新"
 
-#: .\course\versioning.py:448
+#: .\course\versioning.py:499
 msgid "End preview"
 msgstr "结束预览"
 
-#: .\course\versioning.py:450
+#: .\course\versioning.py:501
 msgid "Fetch and preview"
 msgstr "fetch并预览"
 
-#: .\course\versioning.py:453
+#: .\course\versioning.py:504
 msgid "Fetch"
 msgstr ""
 
-#: .\course\versioning.py:464
+#: .\course\versioning.py:515
 msgid "must be instructor or TA to update course"
 msgstr "只有任课老师(instructor)和助理(TA)可以更新课程"
 
-#: .\course\versioning.py:540
+#: .\course\versioning.py:592
 msgid "Git Source URL"
 msgstr "Git源URL"
 
-#: .\course\versioning.py:545
+#: .\course\versioning.py:597
 msgid "Public active git SHA"
 msgstr "公开运行的git SHA"
 
-#: .\course\versioning.py:555
+#: .\course\versioning.py:607
 msgid "Current git HEAD"
 msgstr "当前的git HEAD"
 
-#: .\course\versioning.py:566 .\course\versioning.py:578
+#: .\course\versioning.py:618 .\course\versioning.py:630
 msgid "Current preview git SHA"
 msgstr "当前预览的git SHA"
 
-#: .\course\versioning.py:580
+#: .\course\versioning.py:632
 msgid "None"
 msgstr "无"
 
-#: .\course\versioning.py:592
+#: .\course\versioning.py:644
 msgid "Update Course Revision"
 msgstr "更新对课程内容的修订"
 
-#: .\course\views.py:124
+#: .\course\views.py:132
 msgid "only course staff have access"
 msgstr "只有课程管理人员(staff)可以访问"
 
-#: .\course\views.py:127
-msgid "only the instructor has access"
-msgstr "只有任课老师(instructor)可能访问"
-
-#: .\course\views.py:149
+#: .\course\views.py:154
 msgid ""
 "Your enrollment request is pending. You will be notified once it has been "
 "acted upon."
 msgstr "您的加入课程申请处于等待状态, 如果该申请被受理, 您将会立即收到通知. "
 
 #. Translators: "set" fake time.
-#: .\course\views.py:270
+#. Translators: "set" fake facility.
+#: .\course\views.py:275 .\course\views.py:367
 msgid "Set"
 msgstr "设定"
 
 #. Translators: "unset" fake time.
-#: .\course\views.py:273
+#. Translators: "unset" fake facility.
+#: .\course\views.py:278 .\course\views.py:370
 msgid "Unset"
 msgstr "恢复正常"
 
-#: .\course\views.py:301
+#: .\course\views.py:306
 msgid "only staff may set fake time"
 msgstr "只有课程管理人员(staff)及以上可以设置虚拟时间"
 
-#: .\course\views.py:325 .\relate\templates\base.html:78
+#: .\course\views.py:330 .\relate\templates\base-page-top.html:41
+#: .\relate\templates\base.html:77
 msgid "Set fake time"
 msgstr "设置虚拟时间"
 
-#: .\course\views.py:350
+#: .\course\views.py:356
+msgid "Facilities"
+msgstr "教学设施(facility)"
+
+#: .\course\views.py:357
+msgid "Facilities you wish to pretend to be in"
+msgstr "你想假装置身其中的教学设施"
+
+#: .\course\views.py:360
+msgid "Custom facilities"
+msgstr "自定义教学设施"
+
+#: .\course\views.py:362
+msgid ""
+"More (non-predefined) facility names, separated by commas, which would like "
+"to pretend to be in"
+msgstr "更多的(未定义的)用于假装置身其中的教学设施名称, 用逗号分隔"
+
+#: .\course\views.py:375
+msgid "only staff may set fake facility"
+msgstr "只有课程管理人员(staff)及以上可以设置虚拟教学设施"
+
+#: .\course\views.py:405
+msgid "Pretend to be in Facilities"
+msgstr "假装置身于教学设施中"
+
+#: .\course\views.py:431
 msgctxt "Duration for instant flow"
 msgid "Duration in minutes"
 msgstr "时长(分钟)"
 
-#: .\course\views.py:355
+#: .\course\views.py:436
 msgctxt "Add an instant flow"
 msgid "Add"
 msgstr "添加"
 
-#: .\course\views.py:359
+#: .\course\views.py:440
 msgctxt "Cancel all instant flow(s)"
 msgid "Cancel all"
 msgstr "全部取消"
 
-#: .\course\views.py:366
+#: .\course\views.py:447
 msgid "must be instructor to manage instant flow requests"
 msgstr "只有任课老师(instructor)才能管理即时flow"
 
-#: .\course\views.py:413
+#: .\course\views.py:494
 msgid "Manage Instant Flow Requests"
 msgstr "管理即时Flow"
 
-#: .\course\views.py:435
+#: .\course\views.py:516
 msgctxt "Start an activity"
 msgid "Go"
 msgstr "前往"
 
-#: .\course\views.py:445
+#: .\course\views.py:526
 msgid "must be instructor or TA to test flows"
 msgstr "只有任课老师(instructor)和助理(TA)可以测试flow"
 
-#: .\course\views.py:466
+#: .\course\views.py:547
 msgid "Test Flow"
 msgstr "测试flow"
 
-#: .\course\views.py:498
+#: .\course\views.py:579
 msgid "Select participant for whom exception is to be granted."
 msgstr "选择需要给予破例的用户. "
 
-#: .\course\views.py:511 .\course\views.py:599
+#: .\course\views.py:593 .\course\views.py:681
 msgctxt "Next step"
 msgid "Next"
 msgstr "下一步"
 
-#: .\course\views.py:521 .\course\views.py:609 .\course\views.py:822
+#: .\course\views.py:603 .\course\views.py:691 .\course\views.py:906
 msgid "must be instructor or TA to grant exceptions"
 msgstr "只有任课老师(instructor)和助理(TA)可以进行破例评分"
 
-#: .\course\views.py:541 .\course\views.py:718 .\course\views.py:982
+#: .\course\views.py:623 .\course\views.py:802 .\course\views.py:1066
 msgid "Grant Exception"
 msgstr "给予破例"
 
 #. Translators: %s is the string of the start time of a session.
-#: .\course\views.py:548
+#: .\course\views.py:630
 #, python-format
 msgid "started at %s"
 msgstr "开始于%s"
 
-#: .\course\views.py:565
+#: .\course\views.py:647
 msgid ""
 "If you click 'Create session', this tag will be applied to the new session."
 msgstr "如果您点击\"创建session\", 这个tag将会应用到新的session. "
 
-#: .\course\views.py:567
+#: .\course\views.py:649
 msgid "Access rules tag for new session"
 msgstr "新session的访问规则tag"
 
-#: .\course\views.py:573
+#: .\course\views.py:655
 msgid "Create session (override rules)"
 msgstr "创建session(覆盖rules)"
 
-#: .\course\views.py:578
+#: .\course\views.py:660
 msgid "Create session"
 msgstr "创建session"
 
-#: .\course\views.py:589
+#: .\course\views.py:671
 msgid ""
 "The rules that currently apply to selected session will provide the default "
 "values for the rules on the next page."
 msgstr "选定session所采用的rule将为作为下一个page所采用rule的默认值. "
 
-#: .\course\views.py:618
+#: .\course\views.py:700
 #, python-format
 msgid "Granting exception to '%(participation)s' for '%(flow_id)s'."
 msgstr "对%(participation)s的%(flow_id)s给予破例."
 
-#: .\course\views.py:639 .\course\views.py:643
+#: .\course\views.py:721 .\course\views.py:725
 msgid "NONE"
 msgstr "无"
 
-#: .\course\views.py:653
+#: .\course\views.py:737
 msgid ""
 "Creating a new session is (technically) not allowed by course rules. "
 "Clicking 'Create Session' anyway will override this rule."
@@ -4468,12 +4648,12 @@ msgstr ""
 "根据课程的设定, (从技术上)不允许创建一个新的session. 点击\"创建session\"将覆"
 "盖掉这个规则. "
 
-#: .\course\views.py:728
+#: .\course\views.py:812
 msgctxt "Time when access expires"
 msgid "Access expires"
 msgstr "访问到期时间"
 
-#: .\course\views.py:729
+#: .\course\views.py:813
 msgid ""
 "At the specified time, the special access granted below will expire and "
 "revert to being the same as for the rest of the class. This field may be "
@@ -4486,19 +4666,19 @@ msgstr ""
 "date\"和'credit percent\"也不会过期, 并且始终保持有效, 除非被其它的破例措施覆"
 "盖. "
 
-#: .\course\views.py:754
+#: .\course\views.py:838
 msgid "Exception only applies to sessions with the above tag"
 msgstr "只有有以上tag的session才能采取破例措施. "
 
-#: .\course\views.py:773
+#: .\course\views.py:857
 msgid "If set, the 'Due' field will be disregarded."
 msgstr "如果选定, 则“截止时间”的设定将不被考虑. "
 
-#: .\course\views.py:776
+#: .\course\views.py:860
 msgid "Due same as access expiration"
 msgstr "访问到期,则截止"
 
-#: .\course\views.py:781
+#: .\course\views.py:865
 msgid ""
 "The due time shown to the student. Also, the time after which any session "
 "under these rules is subject to expiration."
@@ -4507,50 +4687,50 @@ msgstr ""
 "date shown to the student. Also, the time after which any session under "
 "these rules is subject to expiration. "
 
-#: .\course\views.py:789
+#: .\course\views.py:873
 msgid "Credit percent"
 msgstr "得分百分比"
 
-#: .\course\views.py:802
+#: .\course\views.py:886
 msgid "Save"
 msgstr "保存"
 
-#: .\course\views.py:811
+#: .\course\views.py:895
 msgid ""
 "Must specify access expiration if 'due same as access expiration' is set."
 msgstr ""
 "如果设定了与访问同时截止(due same as access expiration), 则必须确定访问截止时"
 "间(access expiration). "
 
-#: .\course\views.py:883 .\course\views.py:942
+#: .\course\views.py:967 .\course\views.py:1026
 msgid "newly created exception"
 msgstr "新创建的破例"
 
-#: .\course\views.py:912
+#: .\course\views.py:996
 msgid "Granted excecption"
 msgstr "已给予破例"
 
-#: .\course\views.py:914
+#: .\course\views.py:998
 msgid "credit"
 msgstr "应得分"
 
-#: .\course\views.py:959
+#: .\course\views.py:1043
 #, python-format
 msgid "Exception granted to '%(participation)s' for '%(flow_id)s'."
 msgstr "已对%(participation)s的%(flow_id)s给予破例. "
 
-#: .\course\views.py:985
+#: .\course\views.py:1069
 #, python-format
 msgid ""
 "Granting exception to '%(participation)s' for '%(flow_id)s' (session %"
 "(session)s)."
 msgstr "对%(participation)s的%(flow_id)s(%(session)s的session)给予破例."
 
-#: .\course\views.py:1002
+#: .\course\views.py:1086
 msgid "only staff may use this tool"
 msgstr "只有课程管理人员可以使用这个工具"
 
-#: .\course\views.py:1044
+#: .\course\views.py:1128
 #, python-format
 msgid "%(current)d out of %(total)d items processed."
 msgstr "%(current)d个(共计%(total)d个)已经处理."
@@ -4631,22 +4811,39 @@ msgstr ""
 msgid "%(RELATE)s Administration"
 msgstr "%(RELATE)s管理"
 
-#: .\relate\templates\base-page-top.html:23
+#: .\relate\templates\base-page-top.html:35
 #, python-format
 msgid ""
 "You are currently seeing a preview of what the site would look like at %"
 "(fake_time)s."
 msgstr "您现在正在预览这个网站在时间为%(fake_time)s时的样子. "
 
-#: .\relate\templates\base.html:67
+#: .\relate\templates\base-page-top.html:49
+#, python-format
+msgid ""
+"You are currently seeing a preview of what the site would look like from "
+"inside the facilities  <b>%(facilities)s</b>."
+msgstr "您现在正在预览这个网站在教学设施<b>%(facilities)s</b>打开的样子. "
+
+#: .\relate\templates\base-page-top.html:55 .\relate\templates\base.html:78
+msgid "Pretend to be in facilities"
+msgstr "假装置身于教学设施中"
+
+#: .\relate\templates\base-page-top.html:63
+#, python-format
+msgid ""
+"Now impersonating %(last_name)s, %(first_name)s (%(username)s, %(email)s)."
+msgstr "正在模拟用户 %(last_name)s%(first_name)s (%(username)s, %(email)s)."
+
+#: .\relate\templates\base.html:66
 msgid "Staff"
 msgstr "高级管理"
 
-#: .\relate\templates\base.html:70
+#: .\relate\templates\base.html:69
 msgid "Admin site"
 msgstr "管理网站"
 
-#: .\relate\templates\base.html:72
+#: .\relate\templates\base.html:71
 msgid "Test/Troubleshoot"
 msgstr "测试/发现问题"
 
@@ -4667,7 +4864,7 @@ msgstr "登录用户: %(username)s"
 msgid "(impersonated)"
 msgstr "(正在模拟用户)"
 
-#: .\relate\templates\maintenance.html:7
+#: .\relate\templates\maintenance.html:8
 #, python-format
 msgid ""
 "%(RELATE)s is currently in maintenance mode. Sorry for the interruption, "
@@ -4684,6 +4881,31 @@ msgstr "用户信息"
 msgid "Sign out"
 msgstr "退出登录"
 
+
+#~ msgid "Invalid check-in data."
+#~ msgstr "无效的登入数据."
+
+#~ msgid "unrecognized POST action"
+#~ msgstr "无法识别的POST操作"
+
+#~ msgid "Whether the course content has passed validation."
+#~ msgstr "课程内容是否已通过有效性验证. "
+
+#~ msgid "Valid"
+#~ msgstr "通过有效性验证"
+
+#~ msgid ""
+#~ "There may be a problem with the validity of course data, which may lead "
+#~ "to students encountering unexpected errors."
+#~ msgstr ""
+#~ "课程数据的验证有很多的问题, 它们可能导致学生碰到各种不可预料的错误. "
+
+#~ msgid "The course content has not yet been validated."
+#~ msgstr "课程内容尚未验证. "
+
+#~ msgid "only the instructor has access"
+#~ msgstr "只有任课老师(instructor)可能访问"
+
 #~ msgctxt "Flow expiration mode"
 #~ msgid "End session and grade"
 #~ msgstr "结束并评分"