diff --git a/admin/tool/dataprivacy/lang/en/tool_dataprivacy.php b/admin/tool/dataprivacy/lang/en/tool_dataprivacy.php
index bb3fa709533..62fd4d44cd2 100644
--- a/admin/tool/dataprivacy/lang/en/tool_dataprivacy.php
+++ b/admin/tool/dataprivacy/lang/en/tool_dataprivacy.php
@@ -114,7 +114,6 @@ $string['download'] = 'Download';
 $string['downloadexpireduser'] = 'Download has expired. Submit a new request if you wish to export your personal data.';
 $string['dporolemapping'] = 'Privacy officer role mapping';
 $string['dporolemapping_desc'] = 'The privacy officer can manage data requests. The capability tool/dataprivacy:managedatarequests must be allowed for a role to be listed as a privacy officer role mapping option.';
-$string['editcategories'] = 'Edit categories';
 $string['editcategory'] = 'Edit category';
 $string['editcategories'] = 'Edit categories';
 $string['editdefaults'] = 'Edit defaults: {$a}';
diff --git a/admin/tool/usertours/lang/en/tool_usertours.php b/admin/tool/usertours/lang/en/tool_usertours.php
index 8ebce5394a6..ebbde5b0fe1 100644
--- a/admin/tool/usertours/lang/en/tool_usertours.php
+++ b/admin/tool/usertours/lang/en/tool_usertours.php
@@ -72,8 +72,7 @@ $string['movestepup'] = 'Move step up';
 $string['movetourdown'] = 'Move tour down';
 $string['movetourup'] = 'Move tour up';
 $string['name'] = 'Name';
-$string['newstep'] = 'Create step';
-$string['newstep'] = 'New step';
+$string['newstep'] = 'Create a new step';
 $string['newtour'] = 'Create a new tour';
 $string['next'] = 'Next';
 $string['options_heading'] = 'Options';
diff --git a/lang/en/badges.php b/lang/en/badges.php
index 435c7c8190d..dc2c8aef132 100644
--- a/lang/en/badges.php
+++ b/lang/en/badges.php
@@ -283,7 +283,6 @@ $string['error:invalidparambadge'] = 'Badge does not exist. ';
 $string['error:noactivities'] = 'There are no activities with completion criteria enabled in this course.';
 $string['error:nobadges'] = 'There are no course or site badges with access enabled to be added as criteria.';
 $string['error:invalidparamcohort'] = 'Cohort does not exist. ';
-$string['error:noactivities'] = 'There are no activities with completion criteria enabled in this course.';
 $string['error:nocohorts'] = 'No cohorts';
 $string['error:nocourses'] = 'Course completion is not enabled for any of the courses in this site, so none can be displayed. Course completion may be enabled in the course settings.';
 $string['error:nogroups'] = '<p>There are no public collections of badges available in your backpack. </p>
diff --git a/lang/en/grades.php b/lang/en/grades.php
index 23747eb15dc..0e8e54fa3e1 100644
--- a/lang/en/grades.php
+++ b/lang/en/grades.php
@@ -843,7 +843,6 @@ $string['verbosescales'] = 'Verbose scales';
 $string['verbosescales_help'] = 'A verbose scale uses words rather than numbers. Set to \'Yes\' if both numerical and verbose scales are to be imported. Set to \'No\' if only numerical scales are to be imported.';
 $string['viewbygroup'] = 'Group';
 $string['viewgrades'] = 'View grades';
-$string['weight'] = 'weight';
 $string['weight_help'] = 'A value used to determine the relative value of multiple grade items in a category or course.';
 $string['weightcourse'] = 'Use weighted grades for course';
 $string['weightedascending'] = 'Sort by weighted percent ascending';
diff --git a/lang/en/group.php b/lang/en/group.php
index 9d448ec385d..3d7d4ceab0f 100644
--- a/lang/en/group.php
+++ b/lang/en/group.php
@@ -155,7 +155,6 @@ $string['newgrouping'] = 'New grouping';
 $string['newpicture'] = 'New picture';
 $string['newpicture_help'] = 'Select an image in JPG or PNG format. The image will be cropped to a square and resized to 100x100 pixels.';
 $string['noallocation'] = 'No allocation';
-$string['nogrouping'] = 'No grouping';
 $string['nogroup'] = 'No group';
 $string['nogrouping'] = 'No grouping';
 $string['nogroups'] = 'There are no groups set up in this course yet';
diff --git a/lang/en/hub.php b/lang/en/hub.php
index 2e2bcf75e9d..08286af6c6d 100644
--- a/lang/en/hub.php
+++ b/lang/en/hub.php
@@ -245,10 +245,6 @@ $string['forceunregisterconfirmation'] = 'Your site cannot reach {$a}. This hub
 $string['hub'] = 'Hub';
 $string['information'] = 'Information';
 $string['moodleorg'] = 'Moodle';
-$string['nocheckstatusfromunreghub'] = 'The site is not registered on the hub so the status can not be checked.';
-$string['nohubselected'] = 'No hub selected';
-$string['none'] = 'None';
-$string['nosearch'] = 'Don\'t publish hub or courses';
 $string['notregisteredonmoodleorg'] = 'Your administrator needs to register this site with moodle.org.';
 $string['orenterprivatehub'] = 'Alternatively, enter a private hub URL:';
 $string['prioritise'] = 'Prioritise';
diff --git a/lang/en/message.php b/lang/en/message.php
index f9a045a1907..89fad4ffdfb 100644
--- a/lang/en/message.php
+++ b/lang/en/message.php
@@ -103,7 +103,6 @@ $string['messagedrawerviewgroupinfo'] = 'Group details for {$a}';
 $string['messagedrawerviewoverview'] = 'Messages overview';
 $string['messagedrawerviewsearch'] = 'Messages search results for {$a}';
 $string['messagedrawerviewsettings'] = 'Message settings';
-$string['messagepreferences'] = 'Message preferences';
 $string['messages'] = 'Messages';
 $string['messagesselected:'] = 'Messages selected:';
 $string['messagingdatahasnotbeenmigrated'] = 'Your messages are temporarily unavailable due to upgrades in the messaging infrastructure. Please wait for them to be migrated.';
@@ -255,8 +254,6 @@ $string['yourcontactrequestpending'] = 'Your contact request is pending with {$a
 $string['eventmessagecontactblocked'] = 'Message contact blocked';
 $string['eventmessagecontactunblocked'] = 'Message contact unblocked';
 $string['messagingdisabled'] = 'Messaging is disabled on this site, emails will be sent instead';
-$string['userisblockingyou'] = 'This user has blocked you from sending messages to them.';
-$string['userisblockingyounoncontact'] = '{$a} only accepts messages from their contacts.';
 
 // Deprecated since Moodle 3.7.
 $string['nomessages'] = 'No messages';
diff --git a/lang/en/moodle.php b/lang/en/moodle.php
index e42d025121b..1ae3d74fcf1 100644
--- a/lang/en/moodle.php
+++ b/lang/en/moodle.php
@@ -1011,7 +1011,6 @@ $string['courseduration_desc'] = 'The course duration is used to calculate the d
 $string['courseenddateenabled'] = 'Course end date enabled by default';
 $string['courseenddateenabled_desc'] = 'This setting determines if the course end date will be enabled by default for new courses and set to the date calculated from the course duration.';
 $string['eventcontentviewed'] = 'Content viewed';
-$string['filter'] = 'Filter';
 $string['filteroption'] = '{$a->criteria}: {$a->value}';
 $string['filters'] = 'Filters';
 $string['icqnumber'] = 'ICQ number';
diff --git a/lang/en/question.php b/lang/en/question.php
index d9df15e60ca..4bf98499676 100644
--- a/lang/en/question.php
+++ b/lang/en/question.php
@@ -238,7 +238,6 @@ $string['notagfiltersapplied'] = 'No tag filters applied';
 $string['notenoughanswers'] = 'This type of question requires at least {$a} answers';
 $string['notenoughdatatoeditaquestion'] = 'Neither a question id, nor a category id and question type, was specified.';
 $string['notenoughdatatomovequestions'] = 'You need to provide the question ids of questions you want to move.';
-$string['notflagged'] = 'Not flagged';
 $string['novirtualquestiontype'] = 'No virtual question type for question type {$a}';
 $string['numqas'] = 'No. question attempts';
 $string['numquestions'] = 'No. questions';
@@ -269,7 +268,6 @@ $string['questionbank'] = 'Question bank';
 $string['questioncategory'] = 'Question category';
 $string['questioncatsfor'] = 'Question categories for \'{$a}\'';
 $string['questiondoesnotexist'] = 'This question does not exist';
-$string['questionname'] = 'Question name';
 $string['questionno'] = 'Question {$a}';
 $string['questionsaveerror'] = 'Errors occur during saving question - ({$a})';
 $string['questionsinuse'] = '(* Questions marked by an asterisk are already in use in some quizzes. These questions will not be deleted from these quizzes but only from the category list.)';
@@ -314,8 +312,6 @@ $string['answersaved'] = 'Answer saved';
 $string['attemptfinished'] = 'Attempt finished';
 $string['attemptfinishedsubmitting'] = 'Attempt finished submitting: ';
 $string['behaviourbeingused'] = 'Behaviour being used: {$a}';
-$string['cannotloadquestion'] = 'Could not load question';
-$string['cannotpreview'] = 'You can\'t preview these questions!';
 $string['category'] = 'Category';
 $string['changeoptions'] = 'Change options';
 $string['attemptoptions'] = 'Attempt options';
@@ -330,7 +326,6 @@ $string['commentormark'] = 'Make comment or override mark';
 $string['comments'] = 'Comments';
 $string['commentx'] = 'Comment: {$a}';
 $string['complete'] = 'Complete';
-$string['contexterror'] = 'You shouldn\'t have got here if you\'re not moving a category to another context.';
 $string['correct'] = 'Correct';
 $string['correctfeedback'] = 'For any correct response';
 $string['correctfeedbackdefault'] = 'Your answer is correct.';
@@ -339,8 +334,6 @@ $string['defaultmark'] = 'Default mark';
 $string['errorsavingflags'] = 'Error saving the flag state.';
 $string['feedback'] = 'Feedback';
 $string['fillincorrect'] = 'Fill in correct responses';
-$string['flagged'] = 'Flagged';
-$string['flagthisquestion'] = 'Flag this question';
 $string['generalfeedback'] = 'General feedback';
 $string['generalfeedback_help'] = 'General feedback is shown to the student after they have completed the question. Unlike specific feedback, which depends on the question type and what response the student gave, the same general feedback text is shown to all students.
 
@@ -436,7 +429,6 @@ $string['restoremultipletopcats'] = 'The backup file contains more than one top-
 $string['rightanswer'] = 'Right answer';
 $string['rightanswer_help'] = 'An automatically generated summary of the correct response. This can be limited, so you may wish to consider explaining the correct solution in the general feedback for the question, and turning this option off.';
 $string['saved'] = 'Saved: {$a}';
-$string['saveflags'] = 'Save the state of the flags';
 $string['settingsformultipletries'] = 'Multiple tries';
 $string['showhidden'] = 'Also show old questions';
 $string['showmarkandmax'] = 'Show mark and max';
@@ -470,7 +462,6 @@ $string['unknownbehaviour'] = 'Unknown behaviour: {$a}.';
 $string['unknownorunhandledtype'] = 'Unknown or unhandled question type: {$a}';
 $string['unknownquestion'] = 'Unknown question: {$a}.';
 $string['unknownquestioncatregory'] = 'Unknown question category: {$a}.';
-$string['unknownquestiontype'] = 'Unknown question type: {$a}.';
 $string['unusedcategorydeleted'] = 'This category has been deleted because, after deleting the course, its questions weren\'t used any more.';
 $string['updatedisplayoptions'] = 'Update display options';
 $string['whethercorrect'] = 'Whether correct';
diff --git a/mod/assign/feedback/editpdf/lang/en/assignfeedback_editpdf.php b/mod/assign/feedback/editpdf/lang/en/assignfeedback_editpdf.php
index c6f0186bb16..7418191ed34 100644
--- a/mod/assign/feedback/editpdf/lang/en/assignfeedback_editpdf.php
+++ b/mod/assign/feedback/editpdf/lang/en/assignfeedback_editpdf.php
@@ -98,8 +98,6 @@ $string['test_isdir'] = 'The ghostscript path points to a folder, please include
 $string['test_notestfile'] = 'The test PDF is missing';
 $string['test_notexecutable'] = 'The ghostscript points to a file that is not executable';
 $string['test_ok'] = 'The ghostscript path appears to be OK - please check you can see the message in the image below';
-$string['test_doesnotexist'] = 'The ghostscript path points to a non-existent file';
-$string['test_empty'] = 'The ghostscript path is empty - please enter the correct path';
 $string['toolbarbutton'] = '{$a->tool} {$a->shortcut}';
 $string['tool'] = 'Tool';
 $string['viewfeedbackonline'] = 'View annotated PDF...';
diff --git a/mod/assign/lang/en/assign.php b/mod/assign/lang/en/assign.php
index 3c5fed394d6..a4bc37288e2 100644
--- a/mod/assign/lang/en/assign.php
+++ b/mod/assign/lang/en/assign.php
@@ -334,7 +334,6 @@ $string['markingworkflowstatereleased'] = 'Released';
 $string['maxattempts'] = 'Maximum attempts';
 $string['maxattempts_help'] = 'The maximum number of submission attempts that can be made by a student. After this number has been reached, the submission can no longer be reopened.';
 $string['maxgrade'] = 'Maximum grade';
-$string['maxgrade'] = 'Maximum Grade';
 $string['maxperpage'] = 'Maximum assignments per page';
 $string['maxperpage_help'] = 'The maximum number of assignments a grader can show in the assignment grading page. Useful to prevent timeouts on courses with very large enrolments.';
 $string['messageprovider:assign_notification'] = 'Assignment notifications';
diff --git a/mod/glossary/lang/en/glossary.php b/mod/glossary/lang/en/glossary.php
index 30b268693ee..5c71a5eafae 100644
--- a/mod/glossary/lang/en/glossary.php
+++ b/mod/glossary/lang/en/glossary.php
@@ -203,7 +203,6 @@ $string['glossary:managecategories'] = 'Manage categories';
 $string['glossary:managecomments'] = 'Manage comments';
 $string['glossary:manageentries'] = 'Manage entries';
 $string['glossary:rate'] = 'Rate entries';
-$string['glossary:view'] = 'View entries';
 $string['glossarytype'] = 'Glossary type';
 $string['glossarytype_help'] = 'A main glossary is a glossary in which entries from secondary glossaries can be imported. There can only be one main glossary in a course. If glossary entry import is not required, all glossaries in the course can be secondary glossaries.';
 $string['glossary:view'] = 'View glossary';
diff --git a/mod/quiz/lang/en/quiz.php b/mod/quiz/lang/en/quiz.php
index f4480b7b86d..bcd30ef81bc 100644
--- a/mod/quiz/lang/en/quiz.php
+++ b/mod/quiz/lang/en/quiz.php
@@ -52,7 +52,7 @@ $string['addquestionstoquiz'] = 'Add questions to current quiz';
 $string['addrandom'] = 'Add {$a} random questions';
 $string['addrandomfromcategory'] = 'Add random questions from category:';
 $string['addrandomquestion'] = 'Add random question';
-$string['addarandomquestion_help'] = 'When a random question is added, it results in a randomly-chosen question from the category being inserted into the quiz. This means that different students are likely to get a different selection of questions, and when a quiz allows multiple attempts then each attempt is likely to contain a new selection of questions.';
+$string['addrandomquestion_help'] = 'When a random question is added, it results in a randomly-chosen question from the category being inserted into the quiz. This means that different students are likely to get a different selection of questions, and when a quiz allows multiple attempts then each attempt is likely to contain a new selection of questions.';
 $string['addrandomquestionatend'] = 'Add a random question at the end';
 $string['addrandomquestiontopage'] = 'Add a random question to page {$a}';
 $string['addrandomquestiontoquiz'] = 'Add a random question to quiz {$a}';
