Skip to content

Commit 88a9cbc

Browse files
authored
Merge pull request #8523 from sagemathinc/nbgrader-8283
nbgrader: lowercase spelling, address most of #8283
2 parents e4e47ce + cc76449 commit 88a9cbc

35 files changed

+597
-207
lines changed

src/packages/frontend/course/commands.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ export const COMMANDS: { [name: string]: Command } = {
156156
icon: "graduation-cap",
157157
label: defineMessage({
158158
id: "course.commands.nbgrader.label",
159-
defaultMessage: "Configure Nbgrader",
159+
defaultMessage: "Configure nbgrader",
160160
}),
161161
button: labels.nbgrader,
162162
title: defineMessage({
@@ -185,7 +185,7 @@ export const COMMANDS: { [name: string]: Command } = {
185185
"network-file-systems": {
186186
icon: "database",
187187
label: labels.cloud_storage_remote_filesystems,
188-
button: "Nbgrader",
188+
button: labels.nbgrader,
189189
title: defineMessage({
190190
id: "course.commands.network-file-systems.tooltip",
191191
defaultMessage:

src/packages/frontend/course/configuration/actions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ export class ConfigurationActions {
289289
});
290290
}
291291

292-
// we also make sure all teachers have access to that project – otherwise NBGrader can't work, etc.
292+
// we also make sure all teachers have access to that project – otherwise nbgrader can't work, etc.
293293
// this has to happen *after* setting the course field, extended access control, ...
294294
const ps = redux.getStore("projects");
295295
const teachers = ps.get_users(store.get("course_project_id"));

src/packages/frontend/course/configuration/nbgrader.tsx

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
* License: MS-RSL – see LICENSE.md for details
44
*/
55

6+
import { Card, InputNumber, Radio } from "antd";
7+
68
import { Checkbox } from "@cocalc/frontend/antd-bootstrap";
79
import {
810
CSS,
@@ -11,9 +13,8 @@ import {
1113
useRedux,
1214
} from "@cocalc/frontend/app-framework";
1315
import { A, Icon } from "@cocalc/frontend/components";
14-
import { InputNumber } from "antd";
1516
import { SelectProject } from "@cocalc/frontend/projects/select-project";
16-
import { Card, Radio } from "antd";
17+
1718
import { CourseActions } from "../actions";
1819
import {
1920
NBGRADER_CELL_TIMEOUT_MS,
@@ -26,7 +27,7 @@ const radioStyle: CSS = {
2627
display: "block",
2728
whiteSpace: "normal",
2829
fontWeight: "inherit",
29-
};
30+
} as const;
3031

3132
interface Props {
3233
name: string;
@@ -106,7 +107,7 @@ export function Nbgrader({ name }: Props) {
106107
You can create a new project dedicated to running nbgrader, upgrade or
107108
license it appropriately, and copy any files to it that student work
108109
depends on. This new project will be shared will all collaborators of
109-
this instructorproject.
110+
this instructor project.
110111
<br />
111112
You can also grade all student work in the student's own project, which
112113
is good because the code runs in the same environment as the student
@@ -126,7 +127,7 @@ export function Nbgrader({ name }: Props) {
126127
}}
127128
>
128129
<h6>
129-
Nbgrader hidden tests:{" "}
130+
nbgrader hidden tests:{" "}
130131
{settings?.get("nbgrader_include_hidden_tests")
131132
? "Included"
132133
: "NOT included"}
@@ -163,7 +164,7 @@ export function Nbgrader({ name }: Props) {
163164
borderRadius: "5px",
164165
}}
165166
>
166-
<h6>Nbgrader timeouts: {timeout} seconds</h6>
167+
<h6>nbgrader timeouts: {timeout} seconds</h6>
167168
<i>Grading timeout in seconds:</i> if grading a student notebook takes
168169
longer than <i>{timeout} seconds</i>, then it is terminated with a
169170
timeout error.
@@ -213,7 +214,7 @@ export function Nbgrader({ name }: Props) {
213214
borderRadius: "5px",
214215
}}
215216
>
216-
<h6>Nbgrader output limits: {Math.round(max_output / 1000)} KB</h6>
217+
<h6>nbgrader output limits: {Math.round(max_output / 1000)} KB</h6>
217218
<i>Max output:</i> if total output from all cells exceeds{" "}
218219
{Math.round(max_output / 1000)} KB, then further output is truncated.
219220
<InputNumber
@@ -258,7 +259,7 @@ export function Nbgrader({ name }: Props) {
258259
}}
259260
>
260261
<h6>
261-
Nbgrader parallel limit:{" "}
262+
nbgrader parallel limit:{" "}
262263
{parallel > 1
263264
? `grade ${parallel} students at once`
264265
: "one student a time"}
@@ -282,9 +283,10 @@ export function Nbgrader({ name }: Props) {
282283
return (
283284
<Card
284285
title={
285-
<A href="https://doc.cocalc.com/teaching-nbgrader.html">
286-
<Icon name="graduation-cap" /> Nbgrader
287-
</A>
286+
<>
287+
<Icon name="graduation-cap" /> nbgrader (
288+
<A href="https://doc.cocalc.com/teaching-nbgrader.html">Docs</A>)
289+
</>
288290
}
289291
>
290292
{render_grade_project()}

src/packages/frontend/course/nbgrader/nbgrader-button.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export function NbgraderButton({ name, assignment_id }: Props) {
5656
const n = settings.get("nbgrader_parallel") ?? PARALLEL_DEFAULT;
5757
return (
5858
<Tip
59-
title={`Nbgrader parallel limit: grade ${n} students at once`}
59+
title={`nbgrader parallel limit: grade ${n} students at once`}
6060
tip="This is the max number of students to grade in parallel. Change this in course configuration."
6161
>
6262
<div style={{ marginTop: "5px", fontWeight: 400 }}>
@@ -150,10 +150,10 @@ export function NbgraderButton({ name, assignment_id }: Props) {
150150
<span>
151151
{" "}
152152
<Icon name="cocalc-ring" spin />
153-
<Gap /> Nbgrader is running
153+
<Gap /> nbgrader is running
154154
</span>
155155
) : (
156-
<span>Nbgrader...</span>
156+
<span>nbgrader...</span>
157157
);
158158
return (
159159
<div style={{ margin: "5px 0" }}>

src/packages/frontend/cspell.json

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@
33
"language": "en",
44
"enabled": true,
55
"words": [
6+
"autograde",
7+
"autograding",
68
"Bioconductor",
79
"CoCalc",
10+
"conat",
811
"dplyr",
912
"ggplot",
1013
"ipython",
@@ -24,12 +27,14 @@
2427
"rclass",
2528
"rereturn",
2629
"respawns",
30+
"revealjs",
2731
"Rmarkdown",
2832
"rtypes",
2933
"Sagemath",
3034
"sagetex",
3135
"sagews",
3236
"scikit",
37+
"SocketIO",
3338
"statsmodels",
3439
"syncdb",
3540
"syncdoc",
@@ -41,14 +46,14 @@
4146
"timetravel",
4247
"tolerations",
4348
"undelete",
44-
"undeleting",
45-
"revealjs",
46-
"conat",
47-
"SocketIO"
49+
"undeleting"
4850
],
4951
"ignoreWords": [
5052
"antd",
53+
"buttonbar",
5154
"collab",
55+
"flyoutdragbar",
56+
"flyouts",
5257
"immutablejs",
5358
"ipynb",
5459
"isdir",
@@ -60,21 +65,18 @@
6065
"mesg",
6166
"mintime",
6267
"mistralai",
68+
"noconf",
69+
"nprocs",
70+
"pchildren",
71+
"pids",
6372
"Popconfirm",
6473
"PoweroffOutlined",
74+
"ptree",
6575
"reuseinflight",
6676
"sidechat",
6777
"vertexai",
6878
"vfill",
69-
"xsmall",
70-
"flyouts",
71-
"buttonbar",
72-
"noconf",
73-
"flyoutdragbar",
74-
"ptree",
75-
"pchildren",
76-
"nprocs",
77-
"pids"
79+
"xsmall"
7880
],
7981
"flagWords": [],
8082
"ignorePaths": ["node_modules/**", "dist/**", "dist-ts/**", "build/**"],

src/packages/frontend/i18n/common.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -689,7 +689,7 @@ export const labels = defineMessages({
689689
},
690690
nbgrader: {
691691
id: "labels.nbgrader",
692-
defaultMessage: "NBgrader",
692+
defaultMessage: "nbgrader",
693693
},
694694
name: { id: "labels.name", defaultMessage: "Name" },
695695
description: { id: "labels.description", defaultMessage: "Description" },

src/packages/frontend/i18n/trans/ar_EG.json

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,14 @@
142142
"chatroom.chat_input.send_button.tooltip": "إرسال رسالة (shift+enter)",
143143
"client.project.exec.msg": "{blocking, select, true {تنفيذ الأمر {arg}} other {جلب المهمة {arg}}}",
144144
"client.project.exec.start_first": "يجب أن تبدأ المشروع أولاً",
145+
"codemirror.extensions.ai_formula.amsmath_note": "ملاحظة: قد تحتاج إلى التأكد من تحميل <code>{amsmath_package}</code> في المقدمة.",
146+
"codemirror.extensions.ai_formula.description": "سيقوم نموذج اللغة {model} بإنشاء صيغة LaTeX بناءً على وصفك. {help}",
147+
"codemirror.extensions.ai_formula.disabled_message": "تم تعطيل نماذج اللغة AI.",
148+
"codemirror.extensions.ai_formula.help": "<p>يمكنك إدخال وصف الصيغة المطلوبة بطرق مختلفة:</p> <ul> <li>اللغة الطبيعية: <code>drake equation</code>،</li> <li>الترميز الجبري البسيط: <code>(a+b)^2 = a^2 + 2 a b + b^2</code>،</li> <li>أو مزيج من الاثنين: <code>integral from 0 to infinity of (1+sin(x))/x^2 dx</code>.</li> </ul> <p>إذا لم تكن الصيغة صحيحة تمامًا، انقر على \"توليد\" مرة أخرى، جرّب نموذج لغة مختلف، أو عدّل الوصف. بالطبع، يمكنك أيضًا تحريرها كالمعتاد بعد إدراجها.</p> <p>بمجرد أن تكون راضيًا، انقر على زر \"إدراج الصيغة\" وستُدرج صيغة LaTeX المولدة في موضع المؤشر الحالي. زر \"إدراج الرد الكامل\" سيقوم، حسنًا، بإدراج الإجابة كاملة.</p> <p>قبل فتح هذا الحوار، يمكنك حتى تحديد جزء من النص الخاص بك. سيتم استخدام ذلك كوصفك وسيتم استعلام نموذج اللغة الذكي فورًا. إدراج الصيغة سيحل محل النص المحدد.</p>",
149+
"codemirror.extensions.ai_formula.input_placeholder": "وصف الصيغة بلغة طبيعية و/أو ترميز جبري.",
150+
"codemirror.extensions.ai_formula.insert_formula_button": "إدراج صيغة",
151+
"codemirror.extensions.ai_formula.insert_full_reply_button": "إدراج الرد الكامل",
152+
"codemirror.extensions.ai_formula.title": "توليد صيغة LaTeX",
145153
"collaborators.current-collabs.intro": "كل شخص مدرج أدناه يمكنه العمل معك بشكل تعاوني على أي دفتر Jupyter، أو Terminal Linux، أو ملف في هذا المشروع، وإضافة أو إزالة متعاونين آخرين.",
146154
"collaborators.current-collabs.remove_other": "هل أنت متأكد أنك تريد إزالة {user} من هذا المشروع؟ لن يكون لديهم وصول إلى هذا المشروع بعد الآن.",
147155
"collaborators.current-collabs.remove_self": "هل أنت متأكد أنك تريد إزالة <b>نفسك</b> من هذا المشروع؟ لن يكون لديك حق الوصول إلى هذا المشروع بعد الآن ولا يمكنك إضافة نفسك مرة أخرى.",
@@ -364,7 +372,7 @@
364372
"course.commands.env-variables.label": "تكوين متغيرات البيئة",
365373
"course.commands.env-variables.tooltip": "قم بتكوين ما إذا كانت مشاريع الطلاب ترث المتغيرات البيئية لهذا المشروع التعليمي أم لا.",
366374
"course.commands.export-grades.tooltip": "صدّر جميع الدرجات التي سجلتها للطلاب في دورتك إلى ملف csv أو Python.",
367-
"course.commands.nbgrader.label": "تكوين Nbgrader",
375+
"course.commands.nbgrader.label": "تكوين nbgrader",
368376
"course.commands.nbgrader.tooltip": "قم بتكوين كيفية عمل nbgrader.",
369377
"course.commands.network-file-systems.tooltip": "امنح جميع مشاريع الطلاب حق الوصول للقراءة فقط إلى نفس مخازن السحابة وأنظمة الملفات البعيدة مثل مشروع هذا المعلم.",
370378
"course.commands.reconfigure-all-projects.tooltip": "تحديث جميع المشاريع بالطلاب والوصف الصحيح، إلخ.",
@@ -602,6 +610,18 @@
602610
"frame_editors.frame_tree.title_bar.minimize": "عرض كافة الإطارات",
603611
"frame_editors.frame_tree.title_bar.symbols.label.explanation": "إذا تم عرض التسميات، يتم وضع شريط الرموز في صف خاص به تحت القائمة – وإلا فإنه يكون أصغر ويكون بجانب القائمة.",
604612
"frame-editors.frame-tree.add_remove_icon_button_bar.tooltip": "{isOnButtonBar, select, true {انقر على الأيقونة لإزالتها من شريط الأدوات} other {انقر على الأيقونة لإضافتها إلى شريط الأدوات}}",
613+
"frame-editors.llm.preset.comment.description": "أخبرك كيف تضيف تعليقات لتسهيل الفهم.",
614+
"frame-editors.llm.preset.comment.label": "إضافة تعليقات",
615+
"frame-editors.llm.preset.complete.description": "أكمل كتابة هذا. يمكن لنماذج اللغة كتابة التعليمات البرمجية تلقائيًا، إتمام قصيدة، وأكثر من ذلك بكثير.",
616+
"frame-editors.llm.preset.complete.label": "الإكمال التلقائي",
617+
"frame-editors.llm.preset.explain.description": "على سبيل المثال، يمكنك تحديد بعض الشفرات وسأحاول شرح كيفية عملها سطرًا بسطر.",
618+
"frame-editors.llm.preset.explain.label": "شرح",
619+
"frame-editors.llm.preset.fix-errors.description": "اشرح كيفية تصحيح أي أخطاء يمكن العثور عليها.",
620+
"frame-editors.llm.preset.fix-errors.label": "إصلاح الأخطاء",
621+
"frame-editors.llm.preset.review.description": "راجع هذا للتأكد من الصحة والجودة واقترح تحسينات.",
622+
"frame-editors.llm.preset.review.label": "مراجعة",
623+
"frame-editors.llm.preset.summarize.description": "اكتب ملخصًا لهذا.",
624+
"frame-editors.llm.preset.summarize.label": "تلخيص",
605625
"i18n.localization.lang.arabic": "عربي",
606626
"i18n.localization.lang.basque": "الباسكية",
607627
"i18n.localization.lang.chinese": "صيني",
@@ -642,7 +662,7 @@
642662
"jupyter.cell-buttonbr.format-button.tooltip": "نسق هذا الكود ليبدو جميلاً",
643663
"jupyter.commands.cell_toolbar_attachments.label": "شريط أدوات المرفقات",
644664
"jupyter.commands.cell_toolbar_attachments.menu": "المرفقات",
645-
"jupyter.commands.cell_toolbar_create_assignment.label": "إنشاء واجب باستخدام NBgrader",
665+
"jupyter.commands.cell_toolbar_create_assignment.label": "إنشاء واجب باستخدام nbgrader",
646666
"jupyter.commands.cell_toolbar_create_assignment.menu": "إنشاء واجب (nbgrader)",
647667
"jupyter.commands.cell_toolbar_ids.label": "تحرير شريط أدوات معرفات الخلايا",
648668
"jupyter.commands.cell_toolbar_ids.menu": "معرفات",
@@ -717,7 +737,7 @@
717737
"jupyter.commands.nbconvert_slides.label": "خادم عرض الشرائح عبر nbconvert",
718738
"jupyter.commands.nbgrader_assign.button": "توليد",
719739
"jupyter.commands.nbgrader_assign.menu": "إنشاء نسخة الطالب...",
720-
"jupyter.commands.nbgrader_assign.tooltip": "إنشاء نسخة الطالب من هذا المستند، والتي تزيل اختبارات وتعليمات المدرس الإضافية.",
740+
"jupyter.commands.nbgrader_assign.tooltip": "إنشاء النسخة الطلابية من هذا المستند، والتي تزيل اختبارات المعلم الإضافية والخلايا.",
721741
"jupyter.commands.no_kernel.menu": "تعيين النواة إلى لا شيء...",
722742
"jupyter.commands.no_kernel.tooltip": "اضبط الدفتر بحيث لا يحتوي على أي نواة على الإطلاق",
723743
"jupyter.commands.paste_cells_above.menu": "لصق خلايا أعلاه",
@@ -799,8 +819,8 @@
799819
"jupyter.editor.console_title": "افتح وحدة التحكم في سطر الأوامر Jupyter المتصلة بالنواة المشغلة",
800820
"jupyter.editor.introspect.short": "استبصار",
801821
"jupyter.editor.introspect.title": "التفحص",
802-
"jupyter.editor.nbgrader.actions.confirm_assign.body": "سيؤدي إنشاء النسخة المخصصة للطلاب من Jupyter Notebook إلى إنشاء Jupyter Notebook جديد \"{target}\" جاهز للتوزيع على طلابك. تقوم هذه العملية بقفل الخلايا وكتابة البيانات الوصفية بحيث لا يمكن تعديل أو حذف أجزاء من الدفتر عن طريق الخطأ؛ وتزيل الحلول، وتستبدلها بنصوص أو أكواد تقول (على سبيل المثال) \"إجابتك هنا\"؛ كما تقوم بمسح كافة المخرجات. بعد الانتهاء، يمكنك بسهولة فحص الدفتر الناتج للتأكد من أن كل شيء يبدو صحيحاً. (هذا مشابه لـ 'nbgrader assign'). نظام إدارة الدورات في CoCalc سينسخ *فقط* الدليل الفرعي {STUDENT_SUBDIR} الذي يحتوي على هذا الدفتر المولد إلى الطلاب.",
803-
"jupyter.editor.nbgrader.actions.confirm_assign.minimal_stubs": "توليد مع الحد الأدنى من النماذج",
822+
"jupyter.editor.nbgrader.actions.confirm_assign.body": "إنشاء نسخة الطالب من Jupyter Notebook سيؤدي إلى إنشاء Jupyter Notebook جديد \"{target}\" جاهز للتوزيع على طلابك. هذه العملية تقفل الخلايا وتكتب البيانات الوصفية بحيث لا يمكن تعديل أو حذف أجزاء من الدفتر عن طريق الخطأ؛ تقوم بإزالة الحلول واستبدالها بأكواد أو نصوص توضيحية تقول (على سبيل المثال) \"إجابتك هنا\"؛ وتقوم بمسح جميع المخرجات. بمجرد الانتهاء، يمكنك بسهولة فحص الدفتر الناتج للتأكد من أن كل شيء يبدو صحيحًا. (هذا مشابه لـ 'nbgrader assign'.) نظام إدارة الدورات في CoCalc سيقوم *فقط* بنسخ الدليل الفرعي {STUDENT_SUBDIR} الذي يحتوي على هذا الدفتر المُنشأ إلى الطلاب.",
823+
"jupyter.editor.nbgrader.actions.confirm_assign.minimal_stubs": "توليد مع الحد الأدنى من النماذج الأساسية",
804824
"jupyter.editor.nbgrader.actions.confirm_assign.title": "إنشاء نسخة الطالب{full, select, true { من Jupyter Notebook} other {}}",
805825
"jupyter.editor.raw_json_editor.short": "تحرير JSON",
806826
"jupyter.editor.raw_json_editor.title": "محرر JSON الخام",
@@ -947,6 +967,7 @@
947967
"labels.files": "الملفات",
948968
"labels.folder": "مجلد",
949969
"labels.frame-editors.title-bar.save_label": "{type, select, is_public {عام} read_only {للقراءة فقط} other {حفظ}}",
970+
"labels.generate": "إنشاء",
950971
"labels.guide": "دليل",
951972
"labels.halt": "إيقاف",
952973
"labels.help": "مساعدة",
@@ -987,7 +1008,7 @@
9871008
"labels.moved": "نُقل",
9881009
"labels.n_of_m": "{n} من {m}",
9891010
"labels.name": "الاسم",
990-
"labels.nbgrader": "NBgrader",
1011+
"labels.nbgrader": "nbgrader",
9911012
"labels.new_dots": "جديد...",
9921013
"labels.new.file": "جديد",
9931014
"labels.new.file.tooltip": "إنشاء ملف جديد",

0 commit comments

Comments
 (0)