feat: certification rules, content sanitization, handle draft course updates and reset content, better redis logging

This commit is contained in:
Rotimi Best
2026-03-30 08:24:55 +01:00
parent ff2ad59377
commit 5a8f50f67b
131 changed files with 5643 additions and 2134 deletions
@@ -1118,7 +1118,11 @@
"answers_required": "कृपया सबमिट करने से पहले कम से कम एक उत्तर प्रदान करें।",
"checking_submission": "आपके सबमिशन की जाँच की जा रही है...",
"answer_required": "कृपया आगे बढ़ने से पहले इस प्रश्न का उत्तर दें।",
"instructor_feedback": "प्रशिक्षक प्रतिक्रिया"
"instructor_feedback": "प्रशिक्षक प्रतिक्रिया",
"attempt_counter": "{कुल} का {वर्तमान} प्रयास करें",
"previous_try": "पिछला प्रयास",
"next_try": "अगला प्रयास",
"try_again": "पुनः प्रयास करें"
},
"edit_mode": {
"delete_modal": "व्यायाम हटाएँ",
@@ -1371,7 +1375,11 @@
"not_set": "सेट नहीं",
"incorrect_badge": "गलत"
}
}
},
"settings": "सेटिंग्स",
"settings_allow_multiple": "एकाधिक प्रयासों की अनुमति दें",
"settings_allow_multiple_helper": "छात्र एक से अधिक बार सबमिट कर सकते हैं और परिणाम स्क्रीन पर पिछले प्रयासों की समीक्षा कर सकते हैं।",
"settings_save": "सेटिंग्स सहेजें"
},
"new_exercise_modal": {
"heading": "नया व्यायाम",
@@ -1632,18 +1640,29 @@
"later": "बंद करें"
}
},
"certificates": {
"progress_hint": "{वर्तमान}% पूर्ण (डाउनलोड करने के लिए {आवश्यक}% आवश्यक)"
},
"certification": {
"rules_heading": "प्रमाणन नियम",
"rules_heading": "नियम",
"deadline_label": "प्रमाणीकरण की समय सीमा",
"deadline_helper": "छात्रों को इस दिनांक समय (स्थानीय समय) से पहले पूर्णता प्रतिशत पूरा करना होगा। बिना किसी समय सीमा के खाली छोड़ दें.",
"threshold_label": "न्यूनतम पूर्णता (%)",
"threshold_helper": "प्रमाणपत्र (0-100) अर्जित करने के लिए संयुक्त पाठ और अभ्यास प्रगति की आवश्यकता है। डिफ़ॉल्ट 100% है.",
"email_message_label": "प्रमाणीकरण ईमेल संदेश",
"email_message_helper": "जब कोई छात्र आवश्यकताओं को पूरा करता है तो ईमेल में वैकल्पिक संदेश दिखाया जाता है। प्रमाणपत्र पृष्ठ का एक लिंक हमेशा शामिल किया जाता है।",
"final_exercise_label": "अंतिम अभ्यास (वैकल्पिक)",
"final_exercise_none": "कोई नहीं",
"final_exercise_helper": "निर्धारित होने पर, छात्रों को उपरोक्त पूर्णता प्रतिशत के अलावा इस अभ्यास पर कम से कम न्यूनतम अंक (सर्वोत्तम प्रयास मायने रखता है) तक पहुंचना होगा।",
"min_exercise_score_label": "अंतिम अभ्यास पर न्यूनतम स्कोर (%)",
"min_exercise_score_helper": "स्कोर उस अभ्यास पर संभावित कुल अंकों का एक प्रतिशत है (0-100)।",
"blocker_progress": "आपके पाठ्यक्रम की प्रगति {वर्तमान}% है; {आवश्यक}% आवश्यक है.",
"blocker_deadline": "प्रमाणन की समय सीमा बीत चुकी है.",
"blocker_no_content": "इस पाठ्यक्रम में पूरा करने के लिए कोई पाठ या अभ्यास नहीं है।",
"blocker_final_not_submitted": "प्रमाणपत्र के लिए अर्हता प्राप्त करने के लिए आवश्यक अभ्यास \"{exerciseTitle}\" सबमिट करें।",
"blocker_final_pending": "\"{exerciseTitle}\" पर आपका प्रयास अभी भी वर्गीकृत किया जा रहा है।",
"blocker_final_score": "\"{exerciseTitle}\" पर आपका सर्वोत्तम स्कोर {bestPercent}% है; {requiredPercent}% आवश्यक है.",
"blocker_final_misconfigured": "प्रमाणन अभ्यास \"{exerciseTitle}\" में कोई बिंदु कॉन्फ़िगर नहीं किया गया है; अपने प्रशिक्षक से इसे ठीक करने के लिए कहें।",
"email_message_label": "ईमेल संदेश",
"email_message_placeholder": "जैसे हमें आपकी प्रगति पर गर्व है - सीखते रहें!"
},
"certificates": {
"progress_hint": "{वर्तमान}% पूर्ण (डाउनलोड करने के लिए {आवश्यक}% आवश्यक)"
}
},
"courses": {