diff --git a/cms/envs/common.py b/cms/envs/common.py
index cdb597b6700d..3db8a2385cb5 100644
--- a/cms/envs/common.py
+++ b/cms/envs/common.py
@@ -516,6 +516,14 @@
# in the LMS and CMS.
# .. toggle_tickets: 'https://github.com/open-craft/edx-platform/pull/429'
'DISABLE_UNENROLLMENT': False,
+
+ # .. toggle_name: FEATURES['ENABLE_LIBRARY_DELETION']
+ # .. toggle_implementation: DjangoSetting
+ # .. toggle_default: False
+ # .. toggle_description: Set to True to enable deletion functionality for library mfe.
+ # .. toggle_use_cases: open_edx
+ # .. toggle_creation_date: 2022-08-31
+ 'ENABLE_LIBRARY_DELETION': False,
}
# .. toggle_name: ENABLE_COPPA_COMPLIANCE
diff --git a/cms/static/images/close-icon.svg b/cms/static/images/close-icon.svg
new file mode 100644
index 000000000000..0c47cbf3cf65
--- /dev/null
+++ b/cms/static/images/close-icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/cms/static/images/external-link-icon.svg b/cms/static/images/external-link-icon.svg
new file mode 100644
index 000000000000..89ccf223e706
--- /dev/null
+++ b/cms/static/images/external-link-icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/cms/static/js/i18n/eo/djangojs.js b/cms/static/js/i18n/eo/djangojs.js
index 5562346c2bba..1480bd7a26ad 100644
--- a/cms/static/js/i18n/eo/djangojs.js
+++ b/cms/static/js/i18n/eo/djangojs.js
@@ -365,6 +365,7 @@
"Certificate Signatories": "\u00c7\u00e9rt\u00eff\u00ef\u00e7\u00e4t\u00e9 S\u00efgn\u00e4t\u00f6r\u00ef\u00e9s \u2c60'\u03c3\u044f\u0454\u043c \u03b9\u03c1\u0455\u03c5\u043c \u2202\u03c3\u0142\u03c3\u044f \u0455\u03b9\u0442 \u03b1\u043c\u0454\u0442, \u00a2\u03c3#",
"Certificate Signatory Configuration": "\u00c7\u00e9rt\u00eff\u00ef\u00e7\u00e4t\u00e9 S\u00efgn\u00e4t\u00f6r\u00fd \u00c7\u00f6nf\u00efg\u00fcr\u00e4t\u00ef\u00f6n \u2c60'\u03c3\u044f\u0454\u043c \u03b9\u03c1\u0455\u03c5\u043c \u2202\u03c3\u0142\u03c3\u044f \u0455\u03b9\u0442 \u03b1\u043c\u0454\u0442, \u00a2\u03c3\u03b7\u0455\u0454\u00a2\u0442\u0454\u0442#",
"Certificate Status:": "\u00c7\u00e9rt\u00eff\u00ef\u00e7\u00e4t\u00e9 St\u00e4t\u00fcs: \u2c60'\u03c3\u044f\u0454\u043c \u03b9\u03c1\u0455\u03c5\u043c \u2202\u03c3\u0142\u03c3\u044f \u0455\u03b9\u0442 \u03b1\u043c\u0454\u0442,#",
+ "Certificate exceptions group selection": "\u00c7\u00e9rt\u00eff\u00ef\u00e7\u00e4t\u00e9 \u00e9x\u00e7\u00e9pt\u00ef\u00f6ns gr\u00f6\u00fcp s\u00e9l\u00e9\u00e7t\u00ef\u00f6n \u2c60'\u03c3\u044f\u0454\u043c \u03b9\u03c1\u0455\u03c5\u043c \u2202\u03c3\u0142\u03c3\u044f \u0455\u03b9\u0442 \u03b1\u043c\u0454\u0442, \u00a2\u03c3\u03b7\u0455\u0454\u00a2\u0442\u0454\u0442\u03c5\u044f#",
"Certificate has been successfully invalidated for <%= user %>.": "\u00c7\u00e9rt\u00eff\u00ef\u00e7\u00e4t\u00e9 h\u00e4s \u00df\u00e9\u00e9n s\u00fc\u00e7\u00e7\u00e9ssf\u00fcll\u00fd \u00efnv\u00e4l\u00efd\u00e4t\u00e9d f\u00f6r <%= user %>. \u2c60'\u03c3\u044f\u0454\u043c \u03b9\u03c1\u0455\u03c5\u043c \u2202\u03c3\u0142\u03c3\u044f \u0455\u03b9\u0442 \u03b1\u043c\u0454\u0442, \u00a2\u03c3\u03b7\u0455\u0454\u00a2\u0442\u0454\u0442\u03c5\u044f \u03b1#",
"Certificate name is required.": "\u00c7\u00e9rt\u00eff\u00ef\u00e7\u00e4t\u00e9 n\u00e4m\u00e9 \u00efs r\u00e9q\u00fc\u00efr\u00e9d. \u2c60'\u03c3\u044f\u0454\u043c \u03b9\u03c1\u0455\u03c5\u043c \u2202\u03c3\u0142\u03c3\u044f \u0455\u03b9\u0442 \u03b1\u043c\u0454\u0442, \u00a2\u03c3\u03b7\u0455\u0454\u00a2#",
"Certificate of <%= user %> has already been invalidated. Please check your spelling and retry.": "\u00c7\u00e9rt\u00eff\u00ef\u00e7\u00e4t\u00e9 \u00f6f <%= user %> h\u00e4s \u00e4lr\u00e9\u00e4d\u00fd \u00df\u00e9\u00e9n \u00efnv\u00e4l\u00efd\u00e4t\u00e9d. Pl\u00e9\u00e4s\u00e9 \u00e7h\u00e9\u00e7k \u00fd\u00f6\u00fcr sp\u00e9ll\u00efng \u00e4nd r\u00e9tr\u00fd. \u2c60'\u03c3\u044f\u0454\u043c \u03b9\u03c1\u0455\u03c5\u043c \u2202\u03c3\u0142\u03c3\u044f \u0455\u03b9\u0442 \u03b1\u043c\u0454\u0442, \u00a2\u03c3\u03b7\u0455\u0454\u00a2#",
diff --git a/cms/static/js/i18n/rtl/djangojs.js b/cms/static/js/i18n/rtl/djangojs.js
index 666e529bf6aa..9131a6e9e30a 100644
--- a/cms/static/js/i18n/rtl/djangojs.js
+++ b/cms/static/js/i18n/rtl/djangojs.js
@@ -343,6 +343,7 @@
"Certificate Signatories": "\u023b\u01dd\u0279\u0287\u1d09\u025f\u1d09\u0254\u0250\u0287\u01dd S\u1d09\u0183n\u0250\u0287\u00f8\u0279\u1d09\u01dds",
"Certificate Signatory Configuration": "\u023b\u01dd\u0279\u0287\u1d09\u025f\u1d09\u0254\u0250\u0287\u01dd S\u1d09\u0183n\u0250\u0287\u00f8\u0279\u028e \u023b\u00f8n\u025f\u1d09\u0183n\u0279\u0250\u0287\u1d09\u00f8n",
"Certificate Status:": "\u023b\u01dd\u0279\u0287\u1d09\u025f\u1d09\u0254\u0250\u0287\u01dd S\u0287\u0250\u0287ns:",
+ "Certificate exceptions group selection": "\u023b\u01dd\u0279\u0287\u1d09\u025f\u1d09\u0254\u0250\u0287\u01dd \u01ddx\u0254\u01ddd\u0287\u1d09\u00f8ns \u0183\u0279\u00f8nd s\u01ddl\u01dd\u0254\u0287\u1d09\u00f8n",
"Certificate has been successfully invalidated for <%= user %>.": "\u023b\u01dd\u0279\u0287\u1d09\u025f\u1d09\u0254\u0250\u0287\u01dd \u0265\u0250s b\u01dd\u01ddn sn\u0254\u0254\u01ddss\u025fnll\u028e \u1d09n\u028c\u0250l\u1d09d\u0250\u0287\u01ddd \u025f\u00f8\u0279 <%= user %>.",
"Certificate name is required.": "\u023b\u01dd\u0279\u0287\u1d09\u025f\u1d09\u0254\u0250\u0287\u01dd n\u0250\u026f\u01dd \u1d09s \u0279\u01ddbn\u1d09\u0279\u01ddd.",
"Certificate of <%= user %> has already been invalidated. Please check your spelling and retry.": "\u023b\u01dd\u0279\u0287\u1d09\u025f\u1d09\u0254\u0250\u0287\u01dd \u00f8\u025f <%= user %> \u0265\u0250s \u0250l\u0279\u01dd\u0250d\u028e b\u01dd\u01ddn \u1d09n\u028c\u0250l\u1d09d\u0250\u0287\u01ddd. \u2c63l\u01dd\u0250s\u01dd \u0254\u0265\u01dd\u0254\u029e \u028e\u00f8n\u0279 sd\u01ddll\u1d09n\u0183 \u0250nd \u0279\u01dd\u0287\u0279\u028e.",
diff --git a/cms/static/sass/_build-v1.scss b/cms/static/sass/_build-v1.scss
index 2a32c688e5a1..4f3564b76c85 100644
--- a/cms/static/sass/_build-v1.scss
+++ b/cms/static/sass/_build-v1.scss
@@ -55,6 +55,7 @@
@import 'elements/uploaded-assets'; // layout for asset tables
@import 'elements/creative-commons';
@import 'elements/tooltip';
+@import 'elements/feature-anouncement';
// +Base - Specific Views
// ====================
diff --git a/cms/static/sass/elements/_feature-anouncement.scss b/cms/static/sass/elements/_feature-anouncement.scss
new file mode 100644
index 000000000000..697f9368910f
--- /dev/null
+++ b/cms/static/sass/elements/_feature-anouncement.scss
@@ -0,0 +1,43 @@
+// studio - elements - announcement bar
+// ====================================
+
+.announcement-bar {
+ position: relative;
+ background: #03c7e8;
+ text-align: center;
+ color: $black;
+ padding: ($baseline*0.3) ($baseline*2.2);
+ font: 500 1.4rem/2rem $font-family-sans-serif;
+}
+
+.announcement-bar-link {
+ color: inherit;
+ text-decoration: underline;
+
+ &:hover,
+ &:focus {
+ color: inherit;
+ text-decoration: none;
+ }
+}
+
+.announcement-bar-icon {
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.announcement-bar-close {
+ @include right(0);
+
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ background: transparent url('#{$static-path}/images/close-icon.svg') center;
+ width: ($baseline*1.2);
+ height: ($baseline*1.2);
+ border: none;
+
+ &:hover {
+ opacity: 0.7;
+ }
+}
diff --git a/cms/templates/base.html b/cms/templates/base.html
index 2e420568ef75..aab53ede6072 100644
--- a/cms/templates/base.html
+++ b/cms/templates/base.html
@@ -103,6 +103,8 @@
<% online_help_token = self.online_help_token() if hasattr(self, 'online_help_token') else None %>
<%include file="widgets/header.html" args="online_help_token=online_help_token" />
+ <%include file="widgets/feature-announcement.html" />
+
<%
banner_messages = list(PageLevelMessages.user_messages(request))
%>
diff --git a/cms/templates/widgets/feature-announcement.html b/cms/templates/widgets/feature-announcement.html
new file mode 100644
index 000000000000..073320e0a879
--- /dev/null
+++ b/cms/templates/widgets/feature-announcement.html
@@ -0,0 +1,44 @@
+
+<%page args="course=None" expression_filter="h" />
+<%namespace name='static' file='../static_content.html'/>
+<%! from django.utils.translation import gettext as _ %>
+
+
+
+ ${_("We’ve updated the library authoring experience with a fresh new look!")}
+
${_("Learn more")}
+
+
+
+
+
+
diff --git a/conf/locale/ar/LC_MESSAGES/django.po b/conf/locale/ar/LC_MESSAGES/django.po
index 4774d5625fa3..11370f840a35 100644
--- a/conf/locale/ar/LC_MESSAGES/django.po
+++ b/conf/locale/ar/LC_MESSAGES/django.po
@@ -252,7 +252,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: NELC Open edX Translation , 2020\n"
"Language-Team: Arabic (https://www.transifex.com/open-edx/teams/6205/ar/)\n"
diff --git a/conf/locale/ar/LC_MESSAGES/djangojs.po b/conf/locale/ar/LC_MESSAGES/djangojs.po
index ffc5968f256c..3c2a04fd0ed5 100644
--- a/conf/locale/ar/LC_MESSAGES/djangojs.po
+++ b/conf/locale/ar/LC_MESSAGES/djangojs.po
@@ -189,7 +189,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Roaa Nader , 2021\n"
"Language-Team: Arabic (http://www.transifex.com/open-edx/edx-platform/language/ar/)\n"
diff --git a/conf/locale/ca/LC_MESSAGES/django.po b/conf/locale/ca/LC_MESSAGES/django.po
index c801b5e86161..4424ebee3137 100644
--- a/conf/locale/ca/LC_MESSAGES/django.po
+++ b/conf/locale/ca/LC_MESSAGES/django.po
@@ -66,7 +66,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Waheed Ahmed , 2019\n"
"Language-Team: Catalan (https://www.transifex.com/open-edx/teams/6205/ca/)\n"
diff --git a/conf/locale/ca/LC_MESSAGES/djangojs.po b/conf/locale/ca/LC_MESSAGES/djangojs.po
index d1b25e91428f..fac8021571cd 100644
--- a/conf/locale/ca/LC_MESSAGES/djangojs.po
+++ b/conf/locale/ca/LC_MESSAGES/djangojs.po
@@ -48,7 +48,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Waheed Ahmed , 2019\n"
"Language-Team: Catalan (http://www.transifex.com/open-edx/edx-platform/language/ca/)\n"
diff --git a/conf/locale/de_DE/LC_MESSAGES/django.po b/conf/locale/de_DE/LC_MESSAGES/django.po
index aa130217f674..2d23a145ca47 100644
--- a/conf/locale/de_DE/LC_MESSAGES/django.po
+++ b/conf/locale/de_DE/LC_MESSAGES/django.po
@@ -173,7 +173,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Stefania Trabucchi , 2019\n"
"Language-Team: German (Germany) (https://www.transifex.com/open-edx/teams/6205/de_DE/)\n"
diff --git a/conf/locale/de_DE/LC_MESSAGES/djangojs.po b/conf/locale/de_DE/LC_MESSAGES/djangojs.po
index 95d7b0db68a8..ce49f894eb1e 100644
--- a/conf/locale/de_DE/LC_MESSAGES/djangojs.po
+++ b/conf/locale/de_DE/LC_MESSAGES/djangojs.po
@@ -130,7 +130,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Stefania Trabucchi , 2018-2021\n"
"Language-Team: German (Germany) (http://www.transifex.com/open-edx/edx-platform/language/de_DE/)\n"
diff --git a/conf/locale/el/LC_MESSAGES/django.po b/conf/locale/el/LC_MESSAGES/django.po
index aba8deb34ee5..9380b69d48b4 100644
--- a/conf/locale/el/LC_MESSAGES/django.po
+++ b/conf/locale/el/LC_MESSAGES/django.po
@@ -91,7 +91,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Waheed Ahmed , 2019\n"
"Language-Team: Greek (https://www.transifex.com/open-edx/teams/6205/el/)\n"
diff --git a/conf/locale/el/LC_MESSAGES/djangojs.po b/conf/locale/el/LC_MESSAGES/djangojs.po
index 12a80ab1b4bf..0192eb5142c7 100644
--- a/conf/locale/el/LC_MESSAGES/djangojs.po
+++ b/conf/locale/el/LC_MESSAGES/djangojs.po
@@ -83,7 +83,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Ioannis Stavrakakis , 2020\n"
"Language-Team: Greek (http://www.transifex.com/open-edx/edx-platform/language/el/)\n"
diff --git a/conf/locale/en/LC_MESSAGES/django.po b/conf/locale/en/LC_MESSAGES/django.po
index 3b892a5432ac..4dfe5436187b 100644
--- a/conf/locale/en/LC_MESSAGES/django.po
+++ b/conf/locale/en/LC_MESSAGES/django.po
@@ -38,8 +38,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-08-07 20:34+0000\n"
-"PO-Revision-Date: 2022-08-07 20:34:51.349689\n"
+"POT-Creation-Date: 2022-08-14 20:34+0000\n"
+"PO-Revision-Date: 2022-08-14 20:34:50.269446\n"
"Last-Translator: \n"
"Language-Team: openedx-translation \n"
"Language: en\n"
@@ -7175,19 +7175,19 @@ msgstr ""
#. Translators: These messages are shown to users who do not enter information
#. into the required field or enter it incorrectly.
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your full name."
+msgid "Enter your full name"
msgstr ""
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your first name."
+msgid "Enter your first name"
msgstr ""
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your last name."
+msgid "Enter your last name"
msgstr ""
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "The email addresses do not match."
+msgid "The email addresses do not match"
msgstr ""
#: openedx/core/djangoapps/user_api/accounts/__init__.py
@@ -7195,39 +7195,39 @@ msgid "Enter your confirm email"
msgstr ""
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Select your country or region of residence."
+msgid "Select your country or region of residence"
msgstr ""
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Select your profession."
+msgid "Select your profession"
msgstr ""
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Select your specialty."
+msgid "Select your specialty"
msgstr ""
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your profession."
+msgid "Enter your profession"
msgstr ""
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your specialty."
+msgid "Enter your specialty"
msgstr ""
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your state."
+msgid "Enter your state"
msgstr ""
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your city."
+msgid "Enter your city"
msgstr ""
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Tell us your goals."
+msgid "Tell us your goals"
msgstr ""
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Select the highest level of education you have completed."
+msgid "Select the highest level of education you have completed"
msgstr ""
#: openedx/core/djangoapps/user_api/accounts/__init__.py
@@ -7239,7 +7239,7 @@ msgid "Select your gender"
msgstr ""
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your mailing address."
+msgid "Enter your mailing address"
msgstr ""
#: openedx/core/djangoapps/user_api/accounts/__init__.py
diff --git a/conf/locale/en/LC_MESSAGES/djangojs.po b/conf/locale/en/LC_MESSAGES/djangojs.po
index f34a0b247737..519f6c34c94c 100644
--- a/conf/locale/en/LC_MESSAGES/djangojs.po
+++ b/conf/locale/en/LC_MESSAGES/djangojs.po
@@ -32,8 +32,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-08-07 20:34+0000\n"
-"PO-Revision-Date: 2022-08-07 20:34:51.189580\n"
+"POT-Creation-Date: 2022-08-14 20:34+0000\n"
+"PO-Revision-Date: 2022-08-14 20:34:50.282559\n"
"Last-Translator: \n"
"Language-Team: openedx-translation \n"
"Language: en\n"
@@ -7659,6 +7659,10 @@ msgstr ""
msgid "Generate Exception Certificates"
msgstr ""
+#: lms/templates/instructor/instructor_dashboard_2/certificate-allowlist.underscore
+msgid "Certificate exceptions group selection"
+msgstr ""
+
#: lms/templates/instructor/instructor_dashboard_2/certificate-allowlist.underscore
msgid "All users on the Exception list who do not yet have a certificate"
msgstr ""
diff --git a/conf/locale/eo/LC_MESSAGES/django.mo b/conf/locale/eo/LC_MESSAGES/django.mo
index 4aaf71fe394f..1be4617aaecf 100644
Binary files a/conf/locale/eo/LC_MESSAGES/django.mo and b/conf/locale/eo/LC_MESSAGES/django.mo differ
diff --git a/conf/locale/eo/LC_MESSAGES/django.po b/conf/locale/eo/LC_MESSAGES/django.po
index 4221bb26182e..de299dfaa953 100644
--- a/conf/locale/eo/LC_MESSAGES/django.po
+++ b/conf/locale/eo/LC_MESSAGES/django.po
@@ -38,8 +38,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-08-07 20:34+0000\n"
-"PO-Revision-Date: 2022-08-07 20:34:51.349689\n"
+"POT-Creation-Date: 2022-08-14 20:34+0000\n"
+"PO-Revision-Date: 2022-08-14 20:34:50.269446\n"
"Last-Translator: \n"
"Language-Team: openedx-translation \n"
"Language: eo\n"
@@ -9153,65 +9153,65 @@ msgstr ""
#. Translators: These messages are shown to users who do not enter information
#. into the required field or enter it incorrectly.
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your full name."
-msgstr "Éntér ýöür füll nämé. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #"
+msgid "Enter your full name"
+msgstr "Éntér ýöür füll nämé Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your first name."
-msgstr "Éntér ýöür fïrst nämé. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢#"
+msgid "Enter your first name"
+msgstr "Éntér ýöür fïrst nämé Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your last name."
-msgstr "Éntér ýöür läst nämé. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #"
+msgid "Enter your last name"
+msgstr "Éntér ýöür läst nämé Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "The email addresses do not match."
+msgid "The email addresses do not match"
msgstr ""
-"Thé émäïl äddréssés dö nöt mätçh. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тє#"
+"Thé émäïl äddréssés dö nöt mätçh Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тє#"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
msgid "Enter your confirm email"
msgstr "Éntér ýöür çönfïrm émäïl Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢ση#"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Select your country or region of residence."
+msgid "Select your country or region of residence"
msgstr ""
-"Séléçt ýöür çöüntrý ör régïön öf résïdénçé. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, "
+"Séléçt ýöür çöüntrý ör régïön öf résïdénçé Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, "
"¢σηѕє¢тєтυя #"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Select your profession."
-msgstr "Séléçt ýöür pröféssïön. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σ#"
+msgid "Select your profession"
+msgstr "Séléçt ýöür pröféssïön Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢#"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Select your specialty."
-msgstr "Séléçt ýöür spéçïältý. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢#"
+msgid "Select your specialty"
+msgstr "Séléçt ýöür spéçïältý Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your profession."
-msgstr "Éntér ýöür pröféssïön. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢#"
+msgid "Enter your profession"
+msgstr "Éntér ýöür pröféssïön Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your specialty."
-msgstr "Éntér ýöür spéçïältý. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #"
+msgid "Enter your specialty"
+msgstr "Éntér ýöür spéçïältý Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your state."
-msgstr "Éntér ýöür stäté. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмє#"
+msgid "Enter your state"
+msgstr "Éntér ýöür stäté Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αм#"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your city."
-msgstr "Éntér ýöür çïtý. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αм#"
+msgid "Enter your city"
+msgstr "Éntér ýöür çïtý Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт α#"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Tell us your goals."
-msgstr "Téll üs ýöür göäls. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт,#"
+msgid "Tell us your goals"
+msgstr "Téll üs ýöür göäls Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт#"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Select the highest level of education you have completed."
+msgid "Select the highest level of education you have completed"
msgstr ""
-"Séléçt thé hïghést lévél öf édüçätïön ýöü hävé çömplétéd. Ⱡ'σяєм ιρѕυм ∂σłσя"
-" ѕιт αмєт, ¢σηѕє¢тєтυя α#"
+"Séléçt thé hïghést lévél öf édüçätïön ýöü hävé çömplétéd Ⱡ'σяєм ιρѕυм ∂σłσя "
+"ѕιт αмєт, ¢σηѕє¢тєтυя α#"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
msgid "Select your year of birth"
@@ -9222,8 +9222,8 @@ msgid "Select your gender"
msgstr "Séléçt ýöür géndér Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт#"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your mailing address."
-msgstr "Éntér ýöür mäïlïng äddréss. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє#"
+msgid "Enter your mailing address"
+msgstr "Éntér ýöür mäïlïng äddréss Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕ#"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
msgid ""
diff --git a/conf/locale/eo/LC_MESSAGES/djangojs.mo b/conf/locale/eo/LC_MESSAGES/djangojs.mo
index c662110bf5ee..80613bf78739 100644
Binary files a/conf/locale/eo/LC_MESSAGES/djangojs.mo and b/conf/locale/eo/LC_MESSAGES/djangojs.mo differ
diff --git a/conf/locale/eo/LC_MESSAGES/djangojs.po b/conf/locale/eo/LC_MESSAGES/djangojs.po
index e14276103c54..08def1fb281a 100644
--- a/conf/locale/eo/LC_MESSAGES/djangojs.po
+++ b/conf/locale/eo/LC_MESSAGES/djangojs.po
@@ -32,8 +32,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-08-07 20:34+0000\n"
-"PO-Revision-Date: 2022-08-07 20:34:51.189580\n"
+"POT-Creation-Date: 2022-08-14 20:34+0000\n"
+"PO-Revision-Date: 2022-08-14 20:34:50.282559\n"
"Last-Translator: \n"
"Language-Team: openedx-translation \n"
"Language: eo\n"
@@ -9089,6 +9089,12 @@ msgstr "Àdd tö Éxçéptïön Lïst Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт
msgid "Generate Exception Certificates"
msgstr "Généräté Éxçéptïön Çértïfïçätés Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢т#"
+#: lms/templates/instructor/instructor_dashboard_2/certificate-allowlist.underscore
+msgid "Certificate exceptions group selection"
+msgstr ""
+"Çértïfïçäté éxçéptïöns gröüp séléçtïön Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, "
+"¢σηѕє¢тєтυя#"
+
#: lms/templates/instructor/instructor_dashboard_2/certificate-allowlist.underscore
msgid "All users on the Exception list who do not yet have a certificate"
msgstr ""
diff --git a/conf/locale/es_419/LC_MESSAGES/django.po b/conf/locale/es_419/LC_MESSAGES/django.po
index 5629400e3071..136e5c083dab 100644
--- a/conf/locale/es_419/LC_MESSAGES/django.po
+++ b/conf/locale/es_419/LC_MESSAGES/django.po
@@ -274,7 +274,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Albeiro Gonzalez , 2019\n"
"Language-Team: Spanish (Latin America) (https://www.transifex.com/open-edx/teams/6205/es_419/)\n"
diff --git a/conf/locale/es_419/LC_MESSAGES/djangojs.po b/conf/locale/es_419/LC_MESSAGES/djangojs.po
index 55ea7486af15..a78ffc8283c5 100644
--- a/conf/locale/es_419/LC_MESSAGES/djangojs.po
+++ b/conf/locale/es_419/LC_MESSAGES/djangojs.po
@@ -177,7 +177,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Carolina De Mares , 2021\n"
"Language-Team: Spanish (Latin America) (http://www.transifex.com/open-edx/edx-platform/language/es_419/)\n"
diff --git a/conf/locale/eu_ES/LC_MESSAGES/django.po b/conf/locale/eu_ES/LC_MESSAGES/django.po
index 773bc3b9ce45..84764a5bfd79 100644
--- a/conf/locale/eu_ES/LC_MESSAGES/django.po
+++ b/conf/locale/eu_ES/LC_MESSAGES/django.po
@@ -64,7 +64,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Abel Camacho , 2019\n"
"Language-Team: Basque (Spain) (https://www.transifex.com/open-edx/teams/6205/eu_ES/)\n"
diff --git a/conf/locale/eu_ES/LC_MESSAGES/djangojs.po b/conf/locale/eu_ES/LC_MESSAGES/djangojs.po
index f6d0b0530a0b..51dd27928f46 100644
--- a/conf/locale/eu_ES/LC_MESSAGES/djangojs.po
+++ b/conf/locale/eu_ES/LC_MESSAGES/djangojs.po
@@ -50,7 +50,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Abel Camacho , 2017,2019-2020\n"
"Language-Team: Basque (Spain) (http://www.transifex.com/open-edx/edx-platform/language/eu_ES/)\n"
diff --git a/conf/locale/fr/LC_MESSAGES/django.po b/conf/locale/fr/LC_MESSAGES/django.po
index e38fbc2af489..421c1ecff672 100644
--- a/conf/locale/fr/LC_MESSAGES/django.po
+++ b/conf/locale/fr/LC_MESSAGES/django.po
@@ -313,7 +313,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Alexandre DS , 2020\n"
"Language-Team: French (https://www.transifex.com/open-edx/teams/6205/fr/)\n"
diff --git a/conf/locale/fr/LC_MESSAGES/djangojs.po b/conf/locale/fr/LC_MESSAGES/djangojs.po
index 884b6340f5e2..fcf26c81d6d7 100644
--- a/conf/locale/fr/LC_MESSAGES/djangojs.po
+++ b/conf/locale/fr/LC_MESSAGES/djangojs.po
@@ -217,7 +217,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: iderr , 2021-2022\n"
"Language-Team: French (http://www.transifex.com/open-edx/edx-platform/language/fr/)\n"
diff --git a/conf/locale/id/LC_MESSAGES/django.po b/conf/locale/id/LC_MESSAGES/django.po
index fc5d54859d4a..96eef61f04f1 100644
--- a/conf/locale/id/LC_MESSAGES/django.po
+++ b/conf/locale/id/LC_MESSAGES/django.po
@@ -105,7 +105,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Aprisa Chrysantina , 2019\n"
"Language-Team: Indonesian (https://www.transifex.com/open-edx/teams/6205/id/)\n"
diff --git a/conf/locale/id/LC_MESSAGES/djangojs.po b/conf/locale/id/LC_MESSAGES/djangojs.po
index 0098ef75282f..0165d56397ef 100644
--- a/conf/locale/id/LC_MESSAGES/djangojs.po
+++ b/conf/locale/id/LC_MESSAGES/djangojs.po
@@ -83,7 +83,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Aprisa Chrysantina , 2019\n"
"Language-Team: Indonesian (http://www.transifex.com/open-edx/edx-platform/language/id/)\n"
diff --git a/conf/locale/it_IT/LC_MESSAGES/django.po b/conf/locale/it_IT/LC_MESSAGES/django.po
index 8f50e4293569..6823325f68f2 100644
--- a/conf/locale/it_IT/LC_MESSAGES/django.po
+++ b/conf/locale/it_IT/LC_MESSAGES/django.po
@@ -125,7 +125,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Ilaria Botti , 2021\n"
"Language-Team: Italian (Italy) (https://www.transifex.com/open-edx/teams/6205/it_IT/)\n"
diff --git a/conf/locale/it_IT/LC_MESSAGES/djangojs.po b/conf/locale/it_IT/LC_MESSAGES/djangojs.po
index cc221ad512b7..100c150be1c0 100644
--- a/conf/locale/it_IT/LC_MESSAGES/djangojs.po
+++ b/conf/locale/it_IT/LC_MESSAGES/djangojs.po
@@ -111,7 +111,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Mauri Macera, 2021\n"
"Language-Team: Italian (Italy) (http://www.transifex.com/open-edx/edx-platform/language/it_IT/)\n"
diff --git a/conf/locale/ja_JP/LC_MESSAGES/django.po b/conf/locale/ja_JP/LC_MESSAGES/django.po
index 1a443b3489b8..41c40370ed6b 100644
--- a/conf/locale/ja_JP/LC_MESSAGES/django.po
+++ b/conf/locale/ja_JP/LC_MESSAGES/django.po
@@ -113,7 +113,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Waheed Ahmed , 2019\n"
"Language-Team: Japanese (Japan) (https://www.transifex.com/open-edx/teams/6205/ja_JP/)\n"
diff --git a/conf/locale/ja_JP/LC_MESSAGES/djangojs.po b/conf/locale/ja_JP/LC_MESSAGES/djangojs.po
index b335bab7282d..a069d42516eb 100644
--- a/conf/locale/ja_JP/LC_MESSAGES/djangojs.po
+++ b/conf/locale/ja_JP/LC_MESSAGES/djangojs.po
@@ -78,7 +78,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Kyoto University , 2017\n"
"Language-Team: Japanese (Japan) (http://www.transifex.com/open-edx/edx-platform/language/ja_JP/)\n"
diff --git a/conf/locale/ka/LC_MESSAGES/django.po b/conf/locale/ka/LC_MESSAGES/django.po
index 7180b312d5a2..7edc65cc661b 100644
--- a/conf/locale/ka/LC_MESSAGES/django.po
+++ b/conf/locale/ka/LC_MESSAGES/django.po
@@ -60,7 +60,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Waheed Ahmed , 2019\n"
"Language-Team: Georgian (https://www.transifex.com/open-edx/teams/6205/ka/)\n"
diff --git a/conf/locale/ka/LC_MESSAGES/djangojs.po b/conf/locale/ka/LC_MESSAGES/djangojs.po
index 9b55f82ad9a3..c9f4680dc995 100644
--- a/conf/locale/ka/LC_MESSAGES/djangojs.po
+++ b/conf/locale/ka/LC_MESSAGES/djangojs.po
@@ -56,7 +56,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Lasha Kokilashvili, 2018\n"
"Language-Team: Georgian (http://www.transifex.com/open-edx/edx-platform/language/ka/)\n"
diff --git a/conf/locale/lt_LT/LC_MESSAGES/django.po b/conf/locale/lt_LT/LC_MESSAGES/django.po
index eeb5adf90a1c..7f82d7e29b4b 100644
--- a/conf/locale/lt_LT/LC_MESSAGES/django.po
+++ b/conf/locale/lt_LT/LC_MESSAGES/django.po
@@ -72,7 +72,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Waheed Ahmed , 2019\n"
"Language-Team: Lithuanian (Lithuania) (https://www.transifex.com/open-edx/teams/6205/lt_LT/)\n"
diff --git a/conf/locale/lt_LT/LC_MESSAGES/djangojs.po b/conf/locale/lt_LT/LC_MESSAGES/djangojs.po
index 99d5ad7cf33e..048bb86bcf42 100644
--- a/conf/locale/lt_LT/LC_MESSAGES/djangojs.po
+++ b/conf/locale/lt_LT/LC_MESSAGES/djangojs.po
@@ -50,7 +50,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Riina , 2014-2015\n"
"Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/open-edx/edx-platform/language/lt_LT/)\n"
diff --git a/conf/locale/lv/LC_MESSAGES/django.po b/conf/locale/lv/LC_MESSAGES/django.po
index 65b7760da295..815001d4f4ef 100644
--- a/conf/locale/lv/LC_MESSAGES/django.po
+++ b/conf/locale/lv/LC_MESSAGES/django.po
@@ -49,7 +49,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Waheed Ahmed , 2019\n"
"Language-Team: Latvian (https://www.transifex.com/open-edx/teams/6205/lv/)\n"
diff --git a/conf/locale/lv/LC_MESSAGES/djangojs.po b/conf/locale/lv/LC_MESSAGES/djangojs.po
index d45cf281851d..7b60638fd3e4 100644
--- a/conf/locale/lv/LC_MESSAGES/djangojs.po
+++ b/conf/locale/lv/LC_MESSAGES/djangojs.po
@@ -40,7 +40,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: LTMC Latvijas Tiesnešu mācību centrs , 2019\n"
"Language-Team: Latvian (http://www.transifex.com/open-edx/edx-platform/language/lv/)\n"
diff --git a/conf/locale/mn/LC_MESSAGES/django.po b/conf/locale/mn/LC_MESSAGES/django.po
index 019449d2a799..9c30ce8d99d4 100644
--- a/conf/locale/mn/LC_MESSAGES/django.po
+++ b/conf/locale/mn/LC_MESSAGES/django.po
@@ -74,7 +74,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Waheed Ahmed , 2019\n"
"Language-Team: Mongolian (https://www.transifex.com/open-edx/teams/6205/mn/)\n"
diff --git a/conf/locale/mn/LC_MESSAGES/djangojs.po b/conf/locale/mn/LC_MESSAGES/djangojs.po
index 8ae3ac147c6f..42a98aef31cb 100644
--- a/conf/locale/mn/LC_MESSAGES/djangojs.po
+++ b/conf/locale/mn/LC_MESSAGES/djangojs.po
@@ -63,7 +63,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Myagmarjav Enkhbileg , 2018\n"
"Language-Team: Mongolian (http://www.transifex.com/open-edx/edx-platform/language/mn/)\n"
diff --git a/conf/locale/pl/LC_MESSAGES/django.po b/conf/locale/pl/LC_MESSAGES/django.po
index 0d9b959fd07b..38563601b886 100644
--- a/conf/locale/pl/LC_MESSAGES/django.po
+++ b/conf/locale/pl/LC_MESSAGES/django.po
@@ -147,7 +147,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Marcin Miłek, 2022\n"
"Language-Team: Polish (https://www.transifex.com/open-edx/teams/6205/pl/)\n"
diff --git a/conf/locale/pl/LC_MESSAGES/djangojs.po b/conf/locale/pl/LC_MESSAGES/djangojs.po
index 02b68b390549..c3824170993d 100644
--- a/conf/locale/pl/LC_MESSAGES/djangojs.po
+++ b/conf/locale/pl/LC_MESSAGES/djangojs.po
@@ -113,7 +113,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Aleks Ada, 2022\n"
"Language-Team: Polish (http://www.transifex.com/open-edx/edx-platform/language/pl/)\n"
diff --git a/conf/locale/pt_BR/LC_MESSAGES/djangojs.po b/conf/locale/pt_BR/LC_MESSAGES/djangojs.po
index 8e8bb46194f8..8db2daf182cb 100644
--- a/conf/locale/pt_BR/LC_MESSAGES/djangojs.po
+++ b/conf/locale/pt_BR/LC_MESSAGES/djangojs.po
@@ -246,7 +246,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Rodrigo Rocha , 2020\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/open-edx/edx-platform/language/pt_BR/)\n"
diff --git a/conf/locale/pt_PT/LC_MESSAGES/django.po b/conf/locale/pt_PT/LC_MESSAGES/django.po
index fb42f5ef4847..bcb601c8716d 100644
--- a/conf/locale/pt_PT/LC_MESSAGES/django.po
+++ b/conf/locale/pt_PT/LC_MESSAGES/django.po
@@ -140,7 +140,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Cátia Lopes , 2019\n"
"Language-Team: Portuguese (Portugal) (https://www.transifex.com/open-edx/teams/6205/pt_PT/)\n"
diff --git a/conf/locale/pt_PT/LC_MESSAGES/djangojs.po b/conf/locale/pt_PT/LC_MESSAGES/djangojs.po
index 037a2cb89f6c..fe3496634291 100644
--- a/conf/locale/pt_PT/LC_MESSAGES/djangojs.po
+++ b/conf/locale/pt_PT/LC_MESSAGES/djangojs.po
@@ -111,7 +111,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Nika Shahidian, 2022\n"
"Language-Team: Portuguese (Portugal) (http://www.transifex.com/open-edx/edx-platform/language/pt_PT/)\n"
diff --git a/conf/locale/rtl/LC_MESSAGES/django.mo b/conf/locale/rtl/LC_MESSAGES/django.mo
index 66dce611cb61..613da608d420 100644
Binary files a/conf/locale/rtl/LC_MESSAGES/django.mo and b/conf/locale/rtl/LC_MESSAGES/django.mo differ
diff --git a/conf/locale/rtl/LC_MESSAGES/django.po b/conf/locale/rtl/LC_MESSAGES/django.po
index 8b26db897b1a..5621a914f9e8 100644
--- a/conf/locale/rtl/LC_MESSAGES/django.po
+++ b/conf/locale/rtl/LC_MESSAGES/django.po
@@ -38,8 +38,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-08-07 20:34+0000\n"
-"PO-Revision-Date: 2022-08-07 20:34:51.349689\n"
+"POT-Creation-Date: 2022-08-14 20:34+0000\n"
+"PO-Revision-Date: 2022-08-14 20:34:50.269446\n"
"Last-Translator: \n"
"Language-Team: openedx-translation \n"
"Language: rtl\n"
@@ -7915,60 +7915,60 @@ msgstr "Ɇnʇǝɹ ɐ ʌɐlᴉd ǝɯɐᴉl ɐddɹǝss ʇɥɐʇ ɔønʇɐᴉns ɐ
#. Translators: These messages are shown to users who do not enter information
#. into the required field or enter it incorrectly.
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your full name."
-msgstr "Ɇnʇǝɹ ʎønɹ ɟnll nɐɯǝ."
+msgid "Enter your full name"
+msgstr "Ɇnʇǝɹ ʎønɹ ɟnll nɐɯǝ"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your first name."
-msgstr "Ɇnʇǝɹ ʎønɹ ɟᴉɹsʇ nɐɯǝ."
+msgid "Enter your first name"
+msgstr "Ɇnʇǝɹ ʎønɹ ɟᴉɹsʇ nɐɯǝ"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your last name."
-msgstr "Ɇnʇǝɹ ʎønɹ lɐsʇ nɐɯǝ."
+msgid "Enter your last name"
+msgstr "Ɇnʇǝɹ ʎønɹ lɐsʇ nɐɯǝ"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "The email addresses do not match."
-msgstr "Ŧɥǝ ǝɯɐᴉl ɐddɹǝssǝs dø nøʇ ɯɐʇɔɥ."
+msgid "The email addresses do not match"
+msgstr "Ŧɥǝ ǝɯɐᴉl ɐddɹǝssǝs dø nøʇ ɯɐʇɔɥ"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
msgid "Enter your confirm email"
msgstr "Ɇnʇǝɹ ʎønɹ ɔønɟᴉɹɯ ǝɯɐᴉl"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Select your country or region of residence."
-msgstr "Sǝlǝɔʇ ʎønɹ ɔønnʇɹʎ øɹ ɹǝƃᴉøn øɟ ɹǝsᴉdǝnɔǝ."
+msgid "Select your country or region of residence"
+msgstr "Sǝlǝɔʇ ʎønɹ ɔønnʇɹʎ øɹ ɹǝƃᴉøn øɟ ɹǝsᴉdǝnɔǝ"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Select your profession."
-msgstr "Sǝlǝɔʇ ʎønɹ dɹøɟǝssᴉøn."
+msgid "Select your profession"
+msgstr "Sǝlǝɔʇ ʎønɹ dɹøɟǝssᴉøn"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Select your specialty."
-msgstr "Sǝlǝɔʇ ʎønɹ sdǝɔᴉɐlʇʎ."
+msgid "Select your specialty"
+msgstr "Sǝlǝɔʇ ʎønɹ sdǝɔᴉɐlʇʎ"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your profession."
-msgstr "Ɇnʇǝɹ ʎønɹ dɹøɟǝssᴉøn."
+msgid "Enter your profession"
+msgstr "Ɇnʇǝɹ ʎønɹ dɹøɟǝssᴉøn"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your specialty."
-msgstr "Ɇnʇǝɹ ʎønɹ sdǝɔᴉɐlʇʎ."
+msgid "Enter your specialty"
+msgstr "Ɇnʇǝɹ ʎønɹ sdǝɔᴉɐlʇʎ"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your state."
-msgstr "Ɇnʇǝɹ ʎønɹ sʇɐʇǝ."
+msgid "Enter your state"
+msgstr "Ɇnʇǝɹ ʎønɹ sʇɐʇǝ"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your city."
-msgstr "Ɇnʇǝɹ ʎønɹ ɔᴉʇʎ."
+msgid "Enter your city"
+msgstr "Ɇnʇǝɹ ʎønɹ ɔᴉʇʎ"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Tell us your goals."
-msgstr "Ŧǝll ns ʎønɹ ƃøɐls."
+msgid "Tell us your goals"
+msgstr "Ŧǝll ns ʎønɹ ƃøɐls"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Select the highest level of education you have completed."
-msgstr "Sǝlǝɔʇ ʇɥǝ ɥᴉƃɥǝsʇ lǝʌǝl øɟ ǝdnɔɐʇᴉøn ʎøn ɥɐʌǝ ɔøɯdlǝʇǝd."
+msgid "Select the highest level of education you have completed"
+msgstr "Sǝlǝɔʇ ʇɥǝ ɥᴉƃɥǝsʇ lǝʌǝl øɟ ǝdnɔɐʇᴉøn ʎøn ɥɐʌǝ ɔøɯdlǝʇǝd"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
msgid "Select your year of birth"
@@ -7979,8 +7979,8 @@ msgid "Select your gender"
msgstr "Sǝlǝɔʇ ʎønɹ ƃǝndǝɹ"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
-msgid "Enter your mailing address."
-msgstr "Ɇnʇǝɹ ʎønɹ ɯɐᴉlᴉnƃ ɐddɹǝss."
+msgid "Enter your mailing address"
+msgstr "Ɇnʇǝɹ ʎønɹ ɯɐᴉlᴉnƃ ɐddɹǝss"
#: openedx/core/djangoapps/user_api/accounts/__init__.py
msgid ""
diff --git a/conf/locale/rtl/LC_MESSAGES/djangojs.mo b/conf/locale/rtl/LC_MESSAGES/djangojs.mo
index edc2dc55fe07..315596d6683f 100644
Binary files a/conf/locale/rtl/LC_MESSAGES/djangojs.mo and b/conf/locale/rtl/LC_MESSAGES/djangojs.mo differ
diff --git a/conf/locale/rtl/LC_MESSAGES/djangojs.po b/conf/locale/rtl/LC_MESSAGES/djangojs.po
index 028aafb4282c..731c74a5e460 100644
--- a/conf/locale/rtl/LC_MESSAGES/djangojs.po
+++ b/conf/locale/rtl/LC_MESSAGES/djangojs.po
@@ -32,8 +32,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-08-07 20:34+0000\n"
-"PO-Revision-Date: 2022-08-07 20:34:51.189580\n"
+"POT-Creation-Date: 2022-08-14 20:34+0000\n"
+"PO-Revision-Date: 2022-08-14 20:34:50.282559\n"
"Last-Translator: \n"
"Language-Team: openedx-translation \n"
"Language: rtl\n"
@@ -8139,6 +8139,10 @@ msgstr "Ⱥdd ʇø Ɇxɔǝdʇᴉøn Łᴉsʇ"
msgid "Generate Exception Certificates"
msgstr "Ǥǝnǝɹɐʇǝ Ɇxɔǝdʇᴉøn Ȼǝɹʇᴉɟᴉɔɐʇǝs"
+#: lms/templates/instructor/instructor_dashboard_2/certificate-allowlist.underscore
+msgid "Certificate exceptions group selection"
+msgstr "Ȼǝɹʇᴉɟᴉɔɐʇǝ ǝxɔǝdʇᴉøns ƃɹønd sǝlǝɔʇᴉøn"
+
#: lms/templates/instructor/instructor_dashboard_2/certificate-allowlist.underscore
msgid "All users on the Exception list who do not yet have a certificate"
msgstr "Ⱥll nsǝɹs øn ʇɥǝ Ɇxɔǝdʇᴉøn lᴉsʇ ʍɥø dø nøʇ ʎǝʇ ɥɐʌǝ ɐ ɔǝɹʇᴉɟᴉɔɐʇǝ"
diff --git a/conf/locale/ru/LC_MESSAGES/djangojs.po b/conf/locale/ru/LC_MESSAGES/djangojs.po
index 12651569bc45..5a13567d694c 100644
--- a/conf/locale/ru/LC_MESSAGES/djangojs.po
+++ b/conf/locale/ru/LC_MESSAGES/djangojs.po
@@ -191,7 +191,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: ashed , 2022\n"
"Language-Team: Russian (http://www.transifex.com/open-edx/edx-platform/language/ru/)\n"
diff --git a/conf/locale/sk/LC_MESSAGES/django.po b/conf/locale/sk/LC_MESSAGES/django.po
index 88f359f8af46..9826864369f8 100644
--- a/conf/locale/sk/LC_MESSAGES/django.po
+++ b/conf/locale/sk/LC_MESSAGES/django.po
@@ -55,7 +55,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Waheed Ahmed , 2019\n"
"Language-Team: Slovak (https://www.transifex.com/open-edx/teams/6205/sk/)\n"
diff --git a/conf/locale/sk/LC_MESSAGES/djangojs.po b/conf/locale/sk/LC_MESSAGES/djangojs.po
index f4e46fce24bd..fa445a903fb1 100644
--- a/conf/locale/sk/LC_MESSAGES/djangojs.po
+++ b/conf/locale/sk/LC_MESSAGES/djangojs.po
@@ -46,7 +46,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: \n"
"Language-Team: Slovak (http://www.transifex.com/open-edx/edx-platform/language/sk/)\n"
diff --git a/conf/locale/sw_KE/LC_MESSAGES/django.po b/conf/locale/sw_KE/LC_MESSAGES/django.po
index cfe435339b6c..481fbca1b08a 100644
--- a/conf/locale/sw_KE/LC_MESSAGES/django.po
+++ b/conf/locale/sw_KE/LC_MESSAGES/django.po
@@ -85,7 +85,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Waheed Ahmed , 2019\n"
"Language-Team: Swahili (Kenya) (https://www.transifex.com/open-edx/teams/6205/sw_KE/)\n"
diff --git a/conf/locale/sw_KE/LC_MESSAGES/djangojs.po b/conf/locale/sw_KE/LC_MESSAGES/djangojs.po
index 9df579821397..4a779180b244 100644
--- a/conf/locale/sw_KE/LC_MESSAGES/djangojs.po
+++ b/conf/locale/sw_KE/LC_MESSAGES/djangojs.po
@@ -71,7 +71,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: YAHAYA MWAVURIZI , 2017\n"
"Language-Team: Swahili (Kenya) (http://www.transifex.com/open-edx/edx-platform/language/sw_KE/)\n"
diff --git a/conf/locale/th/LC_MESSAGES/django.po b/conf/locale/th/LC_MESSAGES/django.po
index 97815ff0a09e..d5d835f77e2b 100644
--- a/conf/locale/th/LC_MESSAGES/django.po
+++ b/conf/locale/th/LC_MESSAGES/django.po
@@ -115,7 +115,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Waheed Ahmed , 2019\n"
"Language-Team: Thai (https://www.transifex.com/open-edx/teams/6205/th/)\n"
diff --git a/conf/locale/th/LC_MESSAGES/djangojs.po b/conf/locale/th/LC_MESSAGES/djangojs.po
index d7c4de9d0846..04f5c003dce9 100644
--- a/conf/locale/th/LC_MESSAGES/djangojs.po
+++ b/conf/locale/th/LC_MESSAGES/djangojs.po
@@ -73,7 +73,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: edx demo , 2019\n"
"Language-Team: Thai (http://www.transifex.com/open-edx/edx-platform/language/th/)\n"
diff --git a/conf/locale/tr_TR/LC_MESSAGES/django.po b/conf/locale/tr_TR/LC_MESSAGES/django.po
index 2834dcdd0167..df8caff48f04 100644
--- a/conf/locale/tr_TR/LC_MESSAGES/django.po
+++ b/conf/locale/tr_TR/LC_MESSAGES/django.po
@@ -132,7 +132,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Ali Işıngör , 2021\n"
"Language-Team: Turkish (Turkey) (https://www.transifex.com/open-edx/teams/6205/tr_TR/)\n"
diff --git a/conf/locale/tr_TR/LC_MESSAGES/djangojs.po b/conf/locale/tr_TR/LC_MESSAGES/djangojs.po
index d7f1f8a5d367..540f85086f32 100644
--- a/conf/locale/tr_TR/LC_MESSAGES/djangojs.po
+++ b/conf/locale/tr_TR/LC_MESSAGES/djangojs.po
@@ -108,7 +108,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Ali Işıngör , 2018,2020-2021\n"
"Language-Team: Turkish (Turkey) (http://www.transifex.com/open-edx/edx-platform/language/tr_TR/)\n"
diff --git a/conf/locale/uk/LC_MESSAGES/django.po b/conf/locale/uk/LC_MESSAGES/django.po
index b91a42880d1c..0e974b84a3b4 100644
--- a/conf/locale/uk/LC_MESSAGES/django.po
+++ b/conf/locale/uk/LC_MESSAGES/django.po
@@ -124,7 +124,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Danylo Shcherbak , 2020\n"
"Language-Team: Ukrainian (https://www.transifex.com/open-edx/teams/6205/uk/)\n"
diff --git a/conf/locale/uk/LC_MESSAGES/djangojs.po b/conf/locale/uk/LC_MESSAGES/djangojs.po
index 26d20ed25c98..4685cf5ca970 100644
--- a/conf/locale/uk/LC_MESSAGES/djangojs.po
+++ b/conf/locale/uk/LC_MESSAGES/djangojs.po
@@ -102,7 +102,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Andrey Kryachko, 2018\n"
"Language-Team: Ukrainian (http://www.transifex.com/open-edx/edx-platform/language/uk/)\n"
diff --git a/conf/locale/vi/LC_MESSAGES/django.po b/conf/locale/vi/LC_MESSAGES/django.po
index f7372b0e0d5e..cab420142fdb 100644
--- a/conf/locale/vi/LC_MESSAGES/django.po
+++ b/conf/locale/vi/LC_MESSAGES/django.po
@@ -198,7 +198,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Le Minh Tri , 2020\n"
"Language-Team: Vietnamese (https://www.transifex.com/open-edx/teams/6205/vi/)\n"
diff --git a/conf/locale/vi/LC_MESSAGES/djangojs.po b/conf/locale/vi/LC_MESSAGES/djangojs.po
index 24f41021dca1..fa21702cce06 100644
--- a/conf/locale/vi/LC_MESSAGES/djangojs.po
+++ b/conf/locale/vi/LC_MESSAGES/djangojs.po
@@ -113,7 +113,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Le Minh Tri , 2020\n"
"Language-Team: Vietnamese (http://www.transifex.com/open-edx/edx-platform/language/vi/)\n"
diff --git a/conf/locale/zh_CN/LC_MESSAGES/django.po b/conf/locale/zh_CN/LC_MESSAGES/django.po
index a914e4c615db..383a313bdcd7 100644
--- a/conf/locale/zh_CN/LC_MESSAGES/django.po
+++ b/conf/locale/zh_CN/LC_MESSAGES/django.po
@@ -397,7 +397,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: ifLab , 2019\n"
"Language-Team: Chinese (China) (https://www.transifex.com/open-edx/teams/6205/zh_CN/)\n"
diff --git a/conf/locale/zh_CN/LC_MESSAGES/djangojs.po b/conf/locale/zh_CN/LC_MESSAGES/djangojs.po
index f2d7c5db0160..4f78291392c2 100644
--- a/conf/locale/zh_CN/LC_MESSAGES/djangojs.po
+++ b/conf/locale/zh_CN/LC_MESSAGES/djangojs.po
@@ -226,7 +226,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: jsgang , 2015-2017,2020\n"
"Language-Team: Chinese (China) (http://www.transifex.com/open-edx/edx-platform/language/zh_CN/)\n"
diff --git a/conf/locale/zh_HANS/LC_MESSAGES/django.po b/conf/locale/zh_HANS/LC_MESSAGES/django.po
index a914e4c615db..383a313bdcd7 100644
--- a/conf/locale/zh_HANS/LC_MESSAGES/django.po
+++ b/conf/locale/zh_HANS/LC_MESSAGES/django.po
@@ -397,7 +397,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: ifLab , 2019\n"
"Language-Team: Chinese (China) (https://www.transifex.com/open-edx/teams/6205/zh_CN/)\n"
diff --git a/conf/locale/zh_HANS/LC_MESSAGES/djangojs.po b/conf/locale/zh_HANS/LC_MESSAGES/djangojs.po
index f2d7c5db0160..4f78291392c2 100644
--- a/conf/locale/zh_HANS/LC_MESSAGES/djangojs.po
+++ b/conf/locale/zh_HANS/LC_MESSAGES/djangojs.po
@@ -226,7 +226,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: jsgang , 2015-2017,2020\n"
"Language-Team: Chinese (China) (http://www.transifex.com/open-edx/edx-platform/language/zh_CN/)\n"
diff --git a/conf/locale/zh_TW/LC_MESSAGES/django.po b/conf/locale/zh_TW/LC_MESSAGES/django.po
index c03ca81c3b9b..83bf1f351a1a 100644
--- a/conf/locale/zh_TW/LC_MESSAGES/django.po
+++ b/conf/locale/zh_TW/LC_MESSAGES/django.po
@@ -177,7 +177,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Waheed Ahmed , 2019\n"
"Language-Team: Chinese (Taiwan) (https://www.transifex.com/open-edx/teams/6205/zh_TW/)\n"
diff --git a/conf/locale/zh_TW/LC_MESSAGES/djangojs.po b/conf/locale/zh_TW/LC_MESSAGES/djangojs.po
index c39700f82839..89fb282b1ea4 100644
--- a/conf/locale/zh_TW/LC_MESSAGES/djangojs.po
+++ b/conf/locale/zh_TW/LC_MESSAGES/djangojs.po
@@ -132,7 +132,7 @@ msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
-"POT-Creation-Date: 2022-07-31 20:43+0000\n"
+"POT-Creation-Date: 2022-08-07 20:42+0000\n"
"PO-Revision-Date: 2014-06-11 15:18+0000\n"
"Last-Translator: Andrew Lau , 2017\n"
"Language-Team: Chinese (Taiwan) (http://www.transifex.com/open-edx/edx-platform/language/zh_TW/)\n"
diff --git a/lms/djangoapps/discussion/config/waffle.py b/lms/djangoapps/discussion/config/waffle.py
new file mode 100644
index 000000000000..e9fc3aa98ad1
--- /dev/null
+++ b/lms/djangoapps/discussion/config/waffle.py
@@ -0,0 +1,19 @@
+"""
+This module contains configuration settings via waffle switches for the discussions.
+"""
+
+from openedx.core.djangoapps.waffle_utils import CourseWaffleFlag
+
+WAFFLE_NAMESPACE = 'discussions'
+
+# .. toggle_name: discussions.enable_learners_stats
+# .. toggle_implementation: CourseWaffleFlag
+# .. toggle_default: False
+# .. toggle_description: Waffle flag to enable learners stats
+# .. toggle_use_cases: temporary, open_edx
+# .. toggle_creation_date: 2022-08-12
+# .. toggle_target_removal_date: 2022-10-02
+# .. toggle_warning: When the flag is ON, API will return learners stats with original values.
+# .. This is temporary fix for performance issue in API.
+# .. toggle_tickets: INF-444
+ENABLE_LEARNERS_STATS = CourseWaffleFlag(f'{WAFFLE_NAMESPACE}.enable_learners_stats', __name__)
diff --git a/lms/djangoapps/discussion/rest_api/api.py b/lms/djangoapps/discussion/rest_api/api.py
index 9e56c7a32af7..d249f60df4f9 100644
--- a/lms/djangoapps/discussion/rest_api/api.py
+++ b/lms/djangoapps/discussion/rest_api/api.py
@@ -5,6 +5,7 @@
import itertools
from collections import defaultdict
+
from enum import Enum
from typing import Dict, Iterable, List, Literal, Optional, Set, Tuple
from urllib.parse import urlencode, urlunparse
@@ -42,7 +43,8 @@
get_course_user_stats,
)
from openedx.core.djangoapps.django_comment_common.comment_client.thread import Thread
-from openedx.core.djangoapps.django_comment_common.comment_client.utils import CommentClientRequestError
+from openedx.core.djangoapps.django_comment_common.comment_client.utils import CommentClientRequestError, \
+ CommentClient500Error
from openedx.core.djangoapps.django_comment_common.models import (
FORUM_ROLE_ADMINISTRATOR,
FORUM_ROLE_COMMUNITY_TA,
@@ -64,6 +66,7 @@
)
from openedx.core.djangoapps.user_api.accounts.api import get_account_settings
from openedx.core.lib.exceptions import CourseNotFoundError, DiscussionNotFoundError, PageNotFoundError
+from ..config.waffle import ENABLE_LEARNERS_STATS
from ..django_comment_client.base.views import (
track_comment_created_event,
@@ -101,7 +104,7 @@
discussion_open_for_user,
get_usernames_from_search_string,
add_stats_for_users_with_no_discussion_content,
- set_attribute,
+ set_attribute, get_usernames_for_course,
)
User = get_user_model()
@@ -967,20 +970,29 @@ def get_learner_active_thread_list(request, course_key, query_params):
else:
comment_client_user = comment_client.User(id=user_id, course_id=course_key, group_id=group_id)
- threads, page, num_pages = comment_client_user.active_threads(query_params)
- threads = set_attribute(threads, "pinned", False)
- results = _serialize_discussion_entities(
- request, context, threads, {'profile_image'}, DiscussionEntity.thread
- )
- paginator = DiscussionAPIPagination(
- request,
- page,
- num_pages,
- len(threads)
- )
- return paginator.get_paginated_response({
- "results": results,
- })
+ try:
+ threads, page, num_pages = comment_client_user.active_threads(query_params)
+ threads = set_attribute(threads, "pinned", False)
+ results = _serialize_discussion_entities(
+ request, context, threads, {'profile_image'}, DiscussionEntity.thread
+ )
+ paginator = DiscussionAPIPagination(
+ request,
+ page,
+ num_pages,
+ len(threads)
+ )
+ return paginator.get_paginated_response({
+ "results": results,
+ })
+ except CommentClient500Error:
+ return DiscussionAPIPagination(
+ request,
+ page_num=1,
+ num_pages=0,
+ ).get_paginated_response({
+ "results": [],
+ })
def get_comment_list(request, thread_id, endorsed, page, page_size, flagged=False, requested_fields=None):
@@ -1639,6 +1651,17 @@ def get_course_discussion_user_stats(
order_by = order_by or UserOrdering.BY_ACTIVITY
if order_by != UserOrdering.BY_ACTIVITY:
raise ValidationError({"order_by": "Invalid value"})
+
+ if not ENABLE_LEARNERS_STATS.is_enabled(course_key):
+ return get_users_without_stats(
+ username_search_string,
+ course_key,
+ page,
+ page_size,
+ request,
+ is_privileged
+ )
+
params = {
'sort_key': str(order_by),
'page': page,
@@ -1679,3 +1702,65 @@ def get_course_discussion_user_stats(
return paginator.get_paginated_response({
"results": serializer.data,
})
+
+
+def get_users_without_stats(
+ username_search_string,
+ course_key,
+ page_number,
+ page_size,
+ request,
+ is_privileged
+):
+ """
+ This return users with no user stats.
+ This function will be deprecated when this ticket DOS-3414 is resolved
+ """
+ if username_search_string:
+ comma_separated_usernames, matched_users_count, matched_users_pages = get_usernames_from_search_string(
+ course_key, username_search_string, page_number, page_size
+ )
+ if not comma_separated_usernames:
+ return DiscussionAPIPagination(request, 0, 1).get_paginated_response({
+ "results": [],
+ })
+
+ else:
+ comma_separated_usernames, matched_users_count, matched_users_pages = get_usernames_for_course(
+ course_key, page_number, page_size
+ )
+
+ if comma_separated_usernames:
+ updated_course_stats = add_stats_for_users_with_null_values([], comma_separated_usernames)
+
+ serializer = UserStatsSerializer(updated_course_stats, context={"is_privileged": is_privileged}, many=True)
+ paginator = DiscussionAPIPagination(
+ request,
+ page_number,
+ matched_users_pages,
+ matched_users_count,
+ )
+ return paginator.get_paginated_response({
+ "results": serializer.data,
+ })
+
+
+def add_stats_for_users_with_null_values(course_stats, users_in_course):
+ """
+ Update users stats for users with no discussion stats available in course
+ """
+ users_returned_from_api = [user['username'] for user in course_stats]
+ user_list = users_in_course.split(',')
+ users_with_no_discussion_content = set(user_list) ^ set(users_returned_from_api)
+ updated_course_stats = course_stats
+ for user in users_with_no_discussion_content:
+ updated_course_stats.append({
+ 'username': user,
+ 'threads': None,
+ 'replies': None,
+ 'responses': None,
+ 'active_flags': None,
+ 'inactive_flags': None,
+ })
+ updated_course_stats = sorted(updated_course_stats, key=lambda d: len(d['username']))
+ return updated_course_stats
diff --git a/lms/djangoapps/discussion/rest_api/tests/test_views.py b/lms/djangoapps/discussion/rest_api/tests/test_views.py
index 53870dc7ae1f..34896b59320a 100644
--- a/lms/djangoapps/discussion/rest_api/tests/test_views.py
+++ b/lms/djangoapps/discussion/rest_api/tests/test_views.py
@@ -14,11 +14,14 @@
from django.core.files.uploadedfile import SimpleUploadedFile
from django.test import override_settings
from django.urls import reverse
+from edx_toggles.toggles.testutils import override_waffle_flag
from opaque_keys.edx.keys import CourseKey
from pytz import UTC
from rest_framework import status
from rest_framework.parsers import JSONParser
from rest_framework.test import APIClient, APITestCase
+
+from lms.djangoapps.discussion.config.waffle import ENABLE_LEARNERS_STATS
from xmodule.modulestore import ModuleStoreEnum
from xmodule.modulestore.django import modulestore
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase, SharedModuleStoreTestCase
@@ -2890,6 +2893,7 @@ def test_post_update_user_role(self, action, user_in_role):
@ddt.ddt
@httpretty.activate
+@override_waffle_flag(ENABLE_LEARNERS_STATS, True)
class CourseActivityStatsTest(ForumsEnableMixin, UrlResetMixin, CommentsServiceMockMixin, APITestCase,
SharedModuleStoreTestCase):
"""
diff --git a/lms/djangoapps/discussion/rest_api/utils.py b/lms/djangoapps/discussion/rest_api/utils.py
index b2ad505ba5d9..8f9b8c48e614 100644
--- a/lms/djangoapps/discussion/rest_api/utils.py
+++ b/lms/djangoapps/discussion/rest_api/utils.py
@@ -69,6 +69,31 @@ def get_usernames_from_search_string(course_id, search_string, page_number, page
return ','.join(page_matched_users), matched_users_count, matched_users_pages
+def get_usernames_for_course(course_id, page_number, page_size):
+ """
+ Gets usernames for all users in course.
+
+ Args:
+ course_id (CourseKey): Course to check discussions for
+ page_number (int): Page numbers to fetch
+ page_size (int): Number of items in each page
+
+ Returns:
+ page_matched_users (str): comma seperated usernames for the page
+ matched_users_count (int): count of matched users in course
+ matched_users_pages (int): pages of matched users in course
+ """
+ matched_users_in_course = User.objects.filter(courseenrollment__course_id=course_id,)\
+ .order_by(Length('username').asc()).values_list('username', flat=True)
+ if not matched_users_in_course:
+ return '', 0, 0
+ matched_users_count = len(matched_users_in_course)
+ paginator = Paginator(matched_users_in_course, page_size)
+ page_matched_users = paginator.page(page_number)
+ matched_users_pages = int(matched_users_count / page_size)
+ return ','.join(page_matched_users), matched_users_count, matched_users_pages
+
+
def add_stats_for_users_with_no_discussion_content(course_stats, users_in_course):
"""
Update users stats for users with no discussion stats available in course
diff --git a/lms/djangoapps/instructor_task/tasks_helper/grades.py b/lms/djangoapps/instructor_task/tasks_helper/grades.py
index 0978d70a280f..de015799dee5 100644
--- a/lms/djangoapps/instructor_task/tasks_helper/grades.py
+++ b/lms/djangoapps/instructor_task/tasks_helper/grades.py
@@ -797,6 +797,10 @@ def _rows_for_users(self, context, users):
course_key=context.course_id,
):
context.task_progress.attempted += 1
+ self.log_additional_info_for_testing(
+ context,
+ f'ProblemGradeReport: Attempt {context.task_progress.attempted}'
+ )
if not course_grade:
err_msg = str(error)
# There was an error grading this student.
@@ -807,8 +811,13 @@ def _rows_for_users(self, context, users):
[err_msg]
)
context.task_progress.failed += 1
+ self.log_additional_info_for_testing(
+ context,
+ f'ProblemGradeReport: Failed {context.task_progress.failed}'
+ )
continue
+ self.log_additional_info_for_testing(context, 'ProblemGradeReport: Succeeded in reading grade')
earned_possible_values = []
for block_location in context.graded_scorable_blocks_header:
try:
@@ -821,13 +830,19 @@ def _rows_for_users(self, context, users):
else:
earned_possible_values.append(['Not Attempted', problem_score.possible])
+ self.log_additional_info_for_testing(context, 'ProblemGradeReport: earned possible values done')
context.task_progress.succeeded += 1
enrollment_status = _user_enrollment_status(student, context.course_id)
+ self.log_additional_info_for_testing(
+ context,
+ f'ProblemGradeReport: Succeeded {context.task_progress.succeeded}'
+ )
success_rows.append(
[student.id, student.email, student.username] +
[enrollment_status, course_grade.percent] +
_flatten(earned_possible_values)
)
+ self.log_additional_info_for_testing(context, 'ProblemGradeReport: Added rows')
return success_rows, error_rows
diff --git a/lms/static/js/i18n/eo/djangojs.js b/lms/static/js/i18n/eo/djangojs.js
index 5562346c2bba..1480bd7a26ad 100644
--- a/lms/static/js/i18n/eo/djangojs.js
+++ b/lms/static/js/i18n/eo/djangojs.js
@@ -365,6 +365,7 @@
"Certificate Signatories": "\u00c7\u00e9rt\u00eff\u00ef\u00e7\u00e4t\u00e9 S\u00efgn\u00e4t\u00f6r\u00ef\u00e9s \u2c60'\u03c3\u044f\u0454\u043c \u03b9\u03c1\u0455\u03c5\u043c \u2202\u03c3\u0142\u03c3\u044f \u0455\u03b9\u0442 \u03b1\u043c\u0454\u0442, \u00a2\u03c3#",
"Certificate Signatory Configuration": "\u00c7\u00e9rt\u00eff\u00ef\u00e7\u00e4t\u00e9 S\u00efgn\u00e4t\u00f6r\u00fd \u00c7\u00f6nf\u00efg\u00fcr\u00e4t\u00ef\u00f6n \u2c60'\u03c3\u044f\u0454\u043c \u03b9\u03c1\u0455\u03c5\u043c \u2202\u03c3\u0142\u03c3\u044f \u0455\u03b9\u0442 \u03b1\u043c\u0454\u0442, \u00a2\u03c3\u03b7\u0455\u0454\u00a2\u0442\u0454\u0442#",
"Certificate Status:": "\u00c7\u00e9rt\u00eff\u00ef\u00e7\u00e4t\u00e9 St\u00e4t\u00fcs: \u2c60'\u03c3\u044f\u0454\u043c \u03b9\u03c1\u0455\u03c5\u043c \u2202\u03c3\u0142\u03c3\u044f \u0455\u03b9\u0442 \u03b1\u043c\u0454\u0442,#",
+ "Certificate exceptions group selection": "\u00c7\u00e9rt\u00eff\u00ef\u00e7\u00e4t\u00e9 \u00e9x\u00e7\u00e9pt\u00ef\u00f6ns gr\u00f6\u00fcp s\u00e9l\u00e9\u00e7t\u00ef\u00f6n \u2c60'\u03c3\u044f\u0454\u043c \u03b9\u03c1\u0455\u03c5\u043c \u2202\u03c3\u0142\u03c3\u044f \u0455\u03b9\u0442 \u03b1\u043c\u0454\u0442, \u00a2\u03c3\u03b7\u0455\u0454\u00a2\u0442\u0454\u0442\u03c5\u044f#",
"Certificate has been successfully invalidated for <%= user %>.": "\u00c7\u00e9rt\u00eff\u00ef\u00e7\u00e4t\u00e9 h\u00e4s \u00df\u00e9\u00e9n s\u00fc\u00e7\u00e7\u00e9ssf\u00fcll\u00fd \u00efnv\u00e4l\u00efd\u00e4t\u00e9d f\u00f6r <%= user %>. \u2c60'\u03c3\u044f\u0454\u043c \u03b9\u03c1\u0455\u03c5\u043c \u2202\u03c3\u0142\u03c3\u044f \u0455\u03b9\u0442 \u03b1\u043c\u0454\u0442, \u00a2\u03c3\u03b7\u0455\u0454\u00a2\u0442\u0454\u0442\u03c5\u044f \u03b1#",
"Certificate name is required.": "\u00c7\u00e9rt\u00eff\u00ef\u00e7\u00e4t\u00e9 n\u00e4m\u00e9 \u00efs r\u00e9q\u00fc\u00efr\u00e9d. \u2c60'\u03c3\u044f\u0454\u043c \u03b9\u03c1\u0455\u03c5\u043c \u2202\u03c3\u0142\u03c3\u044f \u0455\u03b9\u0442 \u03b1\u043c\u0454\u0442, \u00a2\u03c3\u03b7\u0455\u0454\u00a2#",
"Certificate of <%= user %> has already been invalidated. Please check your spelling and retry.": "\u00c7\u00e9rt\u00eff\u00ef\u00e7\u00e4t\u00e9 \u00f6f <%= user %> h\u00e4s \u00e4lr\u00e9\u00e4d\u00fd \u00df\u00e9\u00e9n \u00efnv\u00e4l\u00efd\u00e4t\u00e9d. Pl\u00e9\u00e4s\u00e9 \u00e7h\u00e9\u00e7k \u00fd\u00f6\u00fcr sp\u00e9ll\u00efng \u00e4nd r\u00e9tr\u00fd. \u2c60'\u03c3\u044f\u0454\u043c \u03b9\u03c1\u0455\u03c5\u043c \u2202\u03c3\u0142\u03c3\u044f \u0455\u03b9\u0442 \u03b1\u043c\u0454\u0442, \u00a2\u03c3\u03b7\u0455\u0454\u00a2#",
diff --git a/lms/static/js/i18n/rtl/djangojs.js b/lms/static/js/i18n/rtl/djangojs.js
index 666e529bf6aa..9131a6e9e30a 100644
--- a/lms/static/js/i18n/rtl/djangojs.js
+++ b/lms/static/js/i18n/rtl/djangojs.js
@@ -343,6 +343,7 @@
"Certificate Signatories": "\u023b\u01dd\u0279\u0287\u1d09\u025f\u1d09\u0254\u0250\u0287\u01dd S\u1d09\u0183n\u0250\u0287\u00f8\u0279\u1d09\u01dds",
"Certificate Signatory Configuration": "\u023b\u01dd\u0279\u0287\u1d09\u025f\u1d09\u0254\u0250\u0287\u01dd S\u1d09\u0183n\u0250\u0287\u00f8\u0279\u028e \u023b\u00f8n\u025f\u1d09\u0183n\u0279\u0250\u0287\u1d09\u00f8n",
"Certificate Status:": "\u023b\u01dd\u0279\u0287\u1d09\u025f\u1d09\u0254\u0250\u0287\u01dd S\u0287\u0250\u0287ns:",
+ "Certificate exceptions group selection": "\u023b\u01dd\u0279\u0287\u1d09\u025f\u1d09\u0254\u0250\u0287\u01dd \u01ddx\u0254\u01ddd\u0287\u1d09\u00f8ns \u0183\u0279\u00f8nd s\u01ddl\u01dd\u0254\u0287\u1d09\u00f8n",
"Certificate has been successfully invalidated for <%= user %>.": "\u023b\u01dd\u0279\u0287\u1d09\u025f\u1d09\u0254\u0250\u0287\u01dd \u0265\u0250s b\u01dd\u01ddn sn\u0254\u0254\u01ddss\u025fnll\u028e \u1d09n\u028c\u0250l\u1d09d\u0250\u0287\u01ddd \u025f\u00f8\u0279 <%= user %>.",
"Certificate name is required.": "\u023b\u01dd\u0279\u0287\u1d09\u025f\u1d09\u0254\u0250\u0287\u01dd n\u0250\u026f\u01dd \u1d09s \u0279\u01ddbn\u1d09\u0279\u01ddd.",
"Certificate of <%= user %> has already been invalidated. Please check your spelling and retry.": "\u023b\u01dd\u0279\u0287\u1d09\u025f\u1d09\u0254\u0250\u0287\u01dd \u00f8\u025f <%= user %> \u0265\u0250s \u0250l\u0279\u01dd\u0250d\u028e b\u01dd\u01ddn \u1d09n\u028c\u0250l\u1d09d\u0250\u0287\u01ddd. \u2c63l\u01dd\u0250s\u01dd \u0254\u0265\u01dd\u0254\u029e \u028e\u00f8n\u0279 sd\u01ddll\u1d09n\u0183 \u0250nd \u0279\u01dd\u0287\u0279\u028e.",
diff --git a/lms/templates/instructor/instructor_dashboard_2/certificate-allowlist.underscore b/lms/templates/instructor/instructor_dashboard_2/certificate-allowlist.underscore
index e644507f2a1b..1eb61002520c 100644
--- a/lms/templates/instructor/instructor_dashboard_2/certificate-allowlist.underscore
+++ b/lms/templates/instructor/instructor_dashboard_2/certificate-allowlist.underscore
@@ -1,6 +1,6 @@
<%- gettext("Generate Exception Certificates") %>