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 "结束并评分"