From c25ec8f1ae52b4f969fa9da56b6f2495ddd4e257 Mon Sep 17 00:00:00 2001 From: Ghassan Maslamani Date: Mon, 28 Feb 2022 16:10:57 +0200 Subject: [PATCH] feat: add descriptions for i18n messages (#815) It fixes: openedx/frontend-wg/issues/74 --- .../AccessExpirationAlert.jsx | 3 ++ .../AccessExpirationMasqueradeBanner.jsx | 1 + .../access-expiration-alert/messages.js | 1 + .../course-start-alert/CourseStartAlert.jsx | 1 + .../CourseStartMasqueradeBanner.jsx | 1 + src/course-home/dates-tab/messages.js | 7 +++ src/course-home/goal-unsubscribe/messages.js | 6 +++ src/course-home/outline-tab/messages.js | 44 +++++++++++++++++++ .../certificate-status/CertificateStatus.jsx | 3 ++ .../certificate-status/messages.js | 21 +++++++++ .../course-completion/messages.js | 9 ++++ .../credit-information/CreditInformation.jsx | 3 ++ .../credit-information/messages.js | 6 +++ .../grades/detailed-grades/DetailedGrades.jsx | 1 + .../progress-tab/grades/messages.js | 38 ++++++++++++++++ src/course-home/progress-tab/messages.js | 2 + .../progress-tab/related-links/messages.js | 5 +++ .../suggested-schedule-messaging/messages.js | 5 +++ .../WeeklyGoalCelebrationModal.jsx | 2 + src/courseware/course/celebration/messages.js | 5 +++ .../content-tools/calculator/Calculator.jsx | 25 +++++++++++ .../course/course-exit/CatalogSuggestion.jsx | 1 + .../course/course-exit/CourseCelebration.jsx | 5 +++ .../course/course-exit/DashboardFootnote.jsx | 1 + .../course/course-exit/ProgramCompletion.jsx | 1 + .../course/course-exit/UpgradeFootnote.jsx | 1 + src/courseware/course/course-exit/messages.js | 13 ++++++ .../sequence/hidden-after-due/messages.js | 3 ++ .../course/sequence/honor-code/HonorCode.jsx | 1 + src/courseware/social-share/messages.js | 1 + src/shared/streak-celebration/messages.js | 2 + src/tab-page/messages.js | 2 + 32 files changed, 220 insertions(+) diff --git a/src/alerts/access-expiration-alert/AccessExpirationAlert.jsx b/src/alerts/access-expiration-alert/AccessExpirationAlert.jsx index 8fc8327b..b3a46bc3 100644 --- a/src/alerts/access-expiration-alert/AccessExpirationAlert.jsx +++ b/src/alerts/access-expiration-alert/AccessExpirationAlert.jsx @@ -65,6 +65,7 @@ function AccessExpirationAlert({ intl, payload }) { ); diff --git a/src/alerts/course-start-alert/CourseStartMasqueradeBanner.jsx b/src/alerts/course-start-alert/CourseStartMasqueradeBanner.jsx index deb2277e..ad85a07e 100644 --- a/src/alerts/course-start-alert/CourseStartMasqueradeBanner.jsx +++ b/src/alerts/course-start-alert/CourseStartMasqueradeBanner.jsx @@ -22,6 +22,7 @@ function CourseStartMasqueradeBanner({ payload }) { ); @@ -133,6 +134,7 @@ function CertificateStatus({ intl }) { Showcase your accomplishment on LinkedIn or your resumé today. You can download your certificate now and access it any time from your {dashboardLink} and {profileLink}." + description="Recommending an action for learner when course certificate is available" values={{ dashboardLink, profileLink }} /> ); @@ -157,6 +159,7 @@ function CertificateStatus({ intl }) { id="courseCelebration.certificateBody.notAvailable.endDate" defaultMessage="This course ends on {endDate}. Final grades and certificates are scheduled to be available after {certAvailabilityDate}." + description="This shown for leaner when they are eligible for certifcate but it't not available yet, it could because leaners just finished the course quickly!" values={{ endDate, certAvailabilityDate }} /> ); diff --git a/src/course-home/progress-tab/certificate-status/messages.js b/src/course-home/progress-tab/certificate-status/messages.js index 741abd92..f9eb1fd1 100644 --- a/src/course-home/progress-tab/certificate-status/messages.js +++ b/src/course-home/progress-tab/certificate-status/messages.js @@ -4,86 +4,107 @@ const messages = defineMessages({ notPassingHeader: { id: 'progress.certificateStatus.notPassingHeader', defaultMessage: 'Certificate status', + description: 'Header text when learner certifcate status is not passing', }, notPassingBody: { id: 'progress.certificateStatus.notPassingBody', defaultMessage: 'In order to qualify for a certificate, you must have a passing grade.', + description: 'Body text when learner certifcate status is not passing', }, inProgressHeader: { id: 'progress.certificateStatus.inProgressHeader', defaultMessage: 'More content is coming soon!', + description: 'Header text when learner certifcate is in progress', }, inProgressBody: { id: 'progress.certificateStatus.inProgressBody', defaultMessage: 'It looks like there is more content in this course that will be released in the future. Look out for email updates or check back on your course for when this content will be available.', + description: 'Body text when learner certifcate is in progress', }, requestableHeader: { id: 'progress.certificateStatus.requestableHeader', defaultMessage: 'Certificate status', + description: 'Header text when learner certifcate status is requestable', }, requestableBody: { id: 'progress.certificateStatus.requestableBody', defaultMessage: 'Congratulations, you qualified for a certificate! In order to access your certificate, request it below.', + description: 'Body text when learner certifcate status is requestable', }, requestableButton: { id: 'progress.certificateStatus.requestableButton', defaultMessage: 'Request certificate', + description: 'Button text when learner certifcate status is requestable', }, unverifiedHeader: { id: 'progress.certificateStatus.unverifiedHeader', defaultMessage: 'Certificate status', + description: 'Header text when learner certifcate status is unverified', }, unverifiedButton: { id: 'progress.certificateStatus.unverifiedButton', defaultMessage: 'Verify ID', + description: 'Button text when learner certifcate status is unverified', }, unverifiedPendingBody: { id: 'progress.certificateStatus.courseCelebration.verificationPending', defaultMessage: 'Your ID verification is pending and your certificate will be available once approved.', + description: 'Body text when learner certifcate status is unverified pending', }, downloadableHeader: { id: 'progress.certificateStatus.downloadableHeader', defaultMessage: 'Your certificate is available!', + description: 'Header text when the certifcate is available', }, downloadableBody: { id: 'progress.certificateStatus.downloadableBody', defaultMessage: 'Showcase your accomplishment on LinkedIn or your resumé today. You can download your certificate now and access it any time from your Dashboard and Profile.', + description: 'Recommending an action for learner when course certificate is available', }, downloadableButton: { id: 'progress.certificateStatus.downloadableButton', defaultMessage: 'Download my certificate', + description: 'Button text when learner certifcate status is downloadable', }, viewableButton: { id: 'progress.certificateStatus.viewableButton', defaultMessage: 'View my certificate', + description: 'Button text which view or links to the certifcate', }, notAvailableHeader: { id: 'progress.certificateStatus.notAvailableHeader', defaultMessage: 'Certificate status', + description: 'Header text when the certifcate is not available', }, upgradeHeader: { id: 'progress.certificateStatus.upgradeHeader', defaultMessage: 'Earn a certificate', + description: 'Header text when the learner needs to upgrade to earn a certifcate ', }, upgradeBody: { id: 'progress.certificateStatus.upgradeBody', defaultMessage: 'You are in an audit track and do not qualify for a certificate. In order to work towards a certificate, upgrade your course today.', + description: 'Body text when the learner needs to upgrade to earn a certifcate ', }, upgradeButton: { id: 'progress.certificateStatus.upgradeButton', defaultMessage: 'Upgrade now', + description: 'Button text which leaner needs to upgrade to get the certifcate', }, unverifiedHomeHeader: { id: 'progress.certificateStatus.unverifiedHomeHeader', defaultMessage: 'Verify your identity to earn a certificate!', + description: 'Header text when the learner needs to do verification to earn a certifcate ', }, unverifiedHomeButton: { id: 'progress.certificateStatus.unverifiedHomeButton', defaultMessage: 'Verify my ID', + description: 'Button text which leaner needs to do verification to earn a certifcate', }, unverifiedHomeBody: { id: 'progress.certificateStatus.unverifiedHomeBody', defaultMessage: 'In order to generate a certificate for this course, you must complete the ID verification process.', + description: 'Body text when the learner needs to do verification to earn a certifcate', }, }); diff --git a/src/course-home/progress-tab/course-completion/messages.js b/src/course-home/progress-tab/course-completion/messages.js index 8d66f4f7..08bb8f59 100644 --- a/src/course-home/progress-tab/course-completion/messages.js +++ b/src/course-home/progress-tab/course-completion/messages.js @@ -4,38 +4,47 @@ const messages = defineMessages({ donutLabel: { id: 'progress.completion.donut.label', defaultMessage: 'completed', + description: 'Label text for progress donut chart', }, completionBody: { id: 'progress.completion.body', defaultMessage: 'This represents how much of the course content you have completed. Note that some content may not yet be released.', + description: 'It explains the meaning of progress donut chart', }, completeContentTooltip: { id: 'progress.completion.tooltip.locked', defaultMessage: 'Content that you have completed.', + description: 'It expalains the meaning of content that is completed', }, courseCompletion: { id: 'progress.completion.header', defaultMessage: 'Course completion', + description: 'Header text for (completion donut chart) section of the progress tab', }, incompleteContentTooltip: { id: 'progress.completion.tooltip', defaultMessage: 'Content that you have access to and have not completed.', + description: 'It explain the meaning for content is completed', }, lockedContentTooltip: { id: 'progress.completion.tooltip.complete', defaultMessage: 'Content that is locked and available only to those who upgrade.', + description: 'It expalains the meaning of content that is locked', }, percentComplete: { id: 'progress.completion.donut.percentComplete', defaultMessage: 'You have completed {percent}% of content in this course.', + description: 'It summarize the progress in the course (100% - %incomplete)', }, percentIncomplete: { id: 'progress.completion.donut.percentIncomplete', defaultMessage: 'You have not completed {percent}% of content in this course that you have access to.', + description: 'It summarize the progress in the course (100% - %complete)', }, percentLocked: { id: 'progress.completion.donut.percentLocked', defaultMessage: '{percent}% of content in this course is locked and available only for those who upgrade.', + description: 'It indicate the relative size of content that is locked in the course (100% - %open_content)', }, }); diff --git a/src/course-home/progress-tab/credit-information/CreditInformation.jsx b/src/course-home/progress-tab/credit-information/CreditInformation.jsx index 673b18c8..8683fb2c 100644 --- a/src/course-home/progress-tab/credit-information/CreditInformation.jsx +++ b/src/course-home/progress-tab/credit-information/CreditInformation.jsx @@ -40,6 +40,7 @@ function CreditInformation({ intl }) { ); @@ -51,6 +52,7 @@ function CreditInformation({ intl }) { defaultMessage=" You have met the requirements for credit in this course. Go to your {dashboardLink} to purchase course credit. Or learn more about {creditLink}." + description="After the credit requirements are met, leaners can then do the last step which purchasing the credit. Note that is only doable for leaners after they met all the requirements" values={{ dashboardLink, creditLink }} /> ); @@ -60,6 +62,7 @@ function CreditInformation({ intl }) { ); diff --git a/src/course-home/progress-tab/credit-information/messages.js b/src/course-home/progress-tab/credit-information/messages.js index c80b2526..939f6ca4 100644 --- a/src/course-home/progress-tab/credit-information/messages.js +++ b/src/course-home/progress-tab/credit-information/messages.js @@ -4,10 +4,12 @@ const messages = defineMessages({ completed: { id: 'progress.creditInformation.completed', defaultMessage: 'Completed', + description: 'Label text if a requirement for (course credit) is satisfied', }, courseCredit: { id: 'progress.creditInformation.courseCredit', defaultMessage: 'course credit', + description: 'Anchor text for link that redirects (course credit) help page', }, minimumGrade: { id: 'progress.creditInformation.minimumGrade', @@ -16,18 +18,22 @@ const messages = defineMessages({ requirementsHeader: { id: 'progress.creditInformation.requirementsHeader', defaultMessage: 'Requirements for course credit', + description: 'Header for the requirements section in course credit', }, upcoming: { id: 'progress.creditInformation.upcoming', defaultMessage: 'Upcoming', + description: 'It indicate that the a (credit requirement) status is not known yet', }, verificationFailed: { id: 'progress.creditInformation.verificationFailed', defaultMessage: 'Verification failed', + description: 'It indicate that the learner submitted a requirement but is either failed or declined', }, verificationSubmitted: { id: 'progress.creditInformation.verificationSubmitted', defaultMessage: 'Verification submitted', + description: 'It indicate that the learner submitted a requirement but is not graded or reviewed yet', }, }); diff --git a/src/course-home/progress-tab/grades/detailed-grades/DetailedGrades.jsx b/src/course-home/progress-tab/grades/detailed-grades/DetailedGrades.jsx index 6a6a2b33..49200715 100644 --- a/src/course-home/progress-tab/grades/detailed-grades/DetailedGrades.jsx +++ b/src/course-home/progress-tab/grades/detailed-grades/DetailedGrades.jsx @@ -68,6 +68,7 @@ function DetailedGrades({ intl }) {

diff --git a/src/course-home/progress-tab/grades/messages.js b/src/course-home/progress-tab/grades/messages.js index 2d3f73f4..72a6624b 100644 --- a/src/course-home/progress-tab/grades/messages.js +++ b/src/course-home/progress-tab/grades/messages.js @@ -4,156 +4,194 @@ const messages = defineMessages({ assignmentType: { id: 'progress.assignmentType', defaultMessage: 'Assignment type', + description: 'Header for column that indicate type of the assignment in grade summary table', }, backToContent: { id: 'progress.footnotes.backToContent', defaultMessage: 'Back to content', + description: 'Text for button that redirects to contnet', }, courseGradeBody: { id: 'progress.courseGrade.body', defaultMessage: 'This represents your weighted grade against the grade needed to pass this course.', + description: 'This text is shown to explain the meaning of the (grade bar) chart', }, courseGradeBarAltText: { id: 'progress.courseGrade.gradeBar.altText', defaultMessage: 'Your current grade is {currentGrade}%. A weighted grade of {passingGrade}% is required to pass in this course.', + description: 'Alt text for the grade chart bar', }, courseGradeFooterGenericPassing: { id: 'progress.courseGrade.footer.generic.passing', defaultMessage: 'You’re currently passing this course', + description: 'This shown when learner weighted grade is greater or equal course passing grade', }, courseGradeFooterNonPassing: { id: 'progress.courseGrade.footer.nonPassing', defaultMessage: 'A weighted grade of {passingGrade}% is required to pass in this course', + description: 'This shown when learner weighted grade is less than course passing grade', }, courseGradeFooterPassingWithGrade: { id: 'progress.courseGrade.footer.passing', defaultMessage: 'You’re currently passing this course with a grade of {letterGrade} ({minGrade}-{maxGrade}%)', + description: 'This shown when learner weighted grade is greater or equal course passing grade amd course is using letter grade', }, courseGradePreviewHeaderLocked: { id: 'progress.courseGrade.preview.headerLocked', defaultMessage: 'locked feature', + description: 'This when (progress page) feature is locked, sometimes learner needs to upgrade to get insight about their progress', }, courseGradePreviewHeaderLimited: { id: 'progress.courseGrade.preview.headerLimited', defaultMessage: 'limited feature', + description: 'This when (progress page) feature is partially locked, it means leaners can see their progress but not get to a certificate', }, courseGradePreviewHeaderAriaHidden: { id: 'progress.courseGrade.preview.header.ariaHidden', defaultMessage: 'Preview of a ', + description: 'This text precedes either (locked feature) or (limited feature)', }, courseGradePreviewUnlockCertificateBody: { id: 'progress.courseGrade.preview.body.unlockCertificate', defaultMessage: 'Unlock to view grades and work towards a certificate.', + description: 'Recommending an action for learner when they need to upgrade to view progress and get a certificate', }, courseGradePartialPreviewUnlockCertificateBody: { id: 'progress.courseGrade.partialpreview.body.unlockCertificate', defaultMessage: 'Unlock to work towards a certificate.', + description: 'Recommending an action for learner when they need to upgrade to get a certificate', }, courseGradePreviewUpgradeDeadlinePassedBody: { id: 'progress.courseGrade.preview.body.upgradeDeadlinePassed', defaultMessage: 'The deadline to upgrade in this course has passed.', + description: 'Shown when learner no longer can upgrade', }, courseGradePreviewUpgradeButton: { id: 'progress.courseGrade.preview.button.upgrade', defaultMessage: 'Upgrade now', + description: 'Text for button that redirects to the upgrade page', }, courseGradeRangeTooltip: { id: 'progress.courseGrade.gradeRange.tooltip', defaultMessage: 'Grade ranges for this course:', + description: 'This shown when course is using (letter grade) to explain e.g. range for A, B, and C...etc', }, courseOutline: { id: 'progress.courseOutline', defaultMessage: 'Course Outline', + description: 'Anchor text for link that redirects to (course outline) tab', }, currentGradeLabel: { id: 'progress.courseGrade.label.currentGrade', defaultMessage: 'Your current grade', + description: 'Text label current leaner grade on (grade bar) chart', }, detailedGrades: { id: 'progress.detailedGrades', defaultMessage: 'Detailed grades', + description: 'Headline for the (detailed grade) section in the progress tab', }, detailedGradesEmpty: { id: 'progress.detailedGrades.emptyTable', defaultMessage: 'You currently have no graded problem scores.', + description: 'It indicate that there are no problem or assignments to be scored', }, footnotesTitle: { id: 'progress.footnotes.title', defaultMessage: 'Grade summary footnotes', + description: 'Title for grade summary footnotes, if exists', }, grade: { id: 'progress.gradeSummary.grade', defaultMessage: 'Grade', + description: 'Headline for (grade column) in grade summary table', }, grades: { id: 'progress.courseGrade.grades', defaultMessage: 'Grades', + description: 'Headline for grades section in progress tab', }, gradesAndCredit: { id: 'progress.courseGrade.gradesAndCredit', defaultMessage: 'Grades & Credit', + description: 'Headline for (grades and credit) section in progress tab', }, gradeRangeTooltipAlt: { id: 'progress.courseGrade.gradeRange.Tooltip', defaultMessage: 'Grade range tooltip', + description: 'Alt text for icon which that triggers (tip box) for grade range', }, gradeSummary: { id: 'progress.gradeSummary', defaultMessage: 'Grade summary', + description: 'Headline for the (grade summary) section in (grades) section in progress tab', }, gradeSummaryLimitedAccessExplanation: { id: 'progress.gradeSummary.limitedAccessExplanation', defaultMessage: 'You have limited access to graded assignments as part of the audit track in this course.', + description: 'Text shown when learner has limited access to grade feature', }, gradeSummaryTooltipAlt: { id: 'progress.gradeSummary.tooltip.alt', defaultMessage: 'Grade summary tooltip', + description: 'Alt text for icon which that triggers (tip box) for grade summary', }, gradeSummaryTooltipBody: { id: 'progress.gradeSummary.tooltip.body', defaultMessage: "Your course assignment's weight is determined by your instructor. " + 'By multiplying your grade by the weight for that assignment type, your weighted grade is calculated. ' + "Your weighted grade is what's used to determine if you pass the course.", + description: 'The content of (tip box) for the grade summary section', }, noAccessToAssignmentType: { id: 'progress.noAcessToAssignmentType', defaultMessage: 'You do not have access to assignments of type {assignmentType}', + description: 'Its alt text for locked icon which is shown if assignment type in (grade summary table) is locked', }, noAccessToSubsection: { id: 'progress.noAcessToSubsection', defaultMessage: 'You do not have access to subsection {displayName}', + description: 'Text shown when learner have limited access to grades feature', }, passingGradeLabel: { id: 'progress.courseGrade.label.passingGrade', defaultMessage: 'Passing grade', + description: 'Label for mark on the (grade bar) chart which indicate the poisition of passing grade on the bar', }, problemScoreLabel: { id: 'progress.detailedGrades.problemScore.label', defaultMessage: 'Problem Scores:', + description: 'Label text which precedes detailed view of all scores per assignment', }, problemScoreToggleAltText: { id: 'progress.detailedGrades.problemScore.toggleButton', defaultMessage: 'Toggle individual problem scores for {subsectionTitle}', + description: 'Alt text for button which switches detailed view per module', }, sectionGradeOverridden: { id: 'progress.detailedGrades.overridden', defaultMessage: 'Section grade has been overridden.', + description: 'This indicate that the graded score has been changed, it can happen if leaner initial assessment was not fair, might be for other reasons as well', }, score: { id: 'progress.score', defaultMessage: 'Score', + description: 'It indicate how many points the learner have socred scored in particular assignment, or exam', }, weight: { id: 'progress.weight', defaultMessage: 'Weight', + description: 'It indicate the weight of particular assignment on overall course grade, it is demeterined by course author', }, weightedGrade: { id: 'progress.weightedGrade', defaultMessage: 'Weighted grade', + description: 'Weighed grade is calculated by (weight %) * (grade score) ', }, weightedGradeSummary: { id: 'progress.weightedGradeSummary', defaultMessage: 'Your current weighted grade summary', + description: 'It the text precede the sum of weighted grades of all the assignment', }, }); diff --git a/src/course-home/progress-tab/messages.js b/src/course-home/progress-tab/messages.js index 1359c318..91fff7e6 100644 --- a/src/course-home/progress-tab/messages.js +++ b/src/course-home/progress-tab/messages.js @@ -4,6 +4,7 @@ const messages = defineMessages({ progressHeader: { id: 'progress.header', defaultMessage: 'Your progress', + description: 'Headline or title for the progress tab', }, progressHeaderForTargetUser: { id: 'progress.header.targetUser', @@ -13,6 +14,7 @@ const messages = defineMessages({ studioLink: { id: 'progress.link.studio', defaultMessage: 'View grading in Studio', + description: 'Text shown for button that redirects to the studio if the user is a staff memember', }, }); diff --git a/src/course-home/progress-tab/related-links/messages.js b/src/course-home/progress-tab/related-links/messages.js index b696f887..80d72718 100644 --- a/src/course-home/progress-tab/related-links/messages.js +++ b/src/course-home/progress-tab/related-links/messages.js @@ -4,22 +4,27 @@ const messages = defineMessages({ datesCardDescription: { id: 'progress.relatedLinks.datesCard.description', defaultMessage: 'A schedule view of your course due dates and upcoming assignments.', + description: 'It explain the content of the dates tab', }, datesCardLink: { id: 'progress.relatedLinks.datesCard.link', defaultMessage: 'Dates', + description: 'Anchor text for link that redirects to dates tab', }, outlineCardDescription: { id: 'progress.relatedLinks.outlineCard.description', defaultMessage: 'A birds-eye view of your course content.', + description: 'It explain the content of the course outline tab', }, outlineCardLink: { id: 'progress.relatedLinks.outlineCard.link', defaultMessage: 'Course Outline', + description: 'Anchor text for link that redirects to course outline tab', }, relatedLinks: { id: 'progress.relatedLinks', defaultMessage: 'Related links', + description: 'Headline for (related links) section in progress tab', }, }); diff --git a/src/course-home/suggested-schedule-messaging/messages.js b/src/course-home/suggested-schedule-messaging/messages.js index 4880130a..185ea667 100644 --- a/src/course-home/suggested-schedule-messaging/messages.js +++ b/src/course-home/suggested-schedule-messaging/messages.js @@ -5,6 +5,7 @@ const messages = defineMessages({ id: 'datesBanner.suggestedSchedule', defaultMessage: 'We’ve built a suggested schedule to help you stay on track. But don’t worry—it’s flexible so you' + ' can learn at your own pace.', + description: 'Messaging that explain the gaol and the effect fo the suggested schedule', }, upgradeToCompleteHeader: { id: 'datesBanner.upgradeToCompleteGradedBanner.header', @@ -15,6 +16,7 @@ const messages = defineMessages({ id: 'datesBanner.upgradeToCompleteGradedBanner.body', defaultMessage: 'You are auditing this course, which means that you are unable to participate in graded' + ' assignments. To complete graded assignments as part of this course, you can upgrade today.', + description: 'It explain the effect of upgrading the course', }, upgradeToCompleteButton: { id: 'datesBanner.upgradeToCompleteGradedBanner.button', @@ -25,6 +27,7 @@ const messages = defineMessages({ id: 'datesBanner.upgradeToResetBanner.body', defaultMessage: 'To keep yourself on track, you can update this schedule and shift the past due assignments into' + ' the future. Don’t worry—you won’t lose any of the progress you’ve made when you shift your due dates.', + description: 'Text that explain the consequences of resetting dates when learner needs to upgrade to do so', }, upgradeToShiftButton: { id: 'datesBanner.upgradeToResetBanner.button', @@ -35,11 +38,13 @@ const messages = defineMessages({ missedDeadlines: { id: 'datesBanner.resetDatesBanner.header', defaultMessage: 'It looks like you missed some important deadlines based on our suggested schedule.', + description: 'Text shown when leaner missed assignment due date', }, shiftDatesBody: { id: 'datesBanner.resetDatesBanner.body', defaultMessage: 'To keep yourself on track, you can update this schedule and shift the past due assignments into' + ' the future. Don’t worry—you won’t lose any of the progress you’ve made when you shift your due dates.', + description: 'Text that explain the consequences of resetting dates', }, shiftDatesButton: { id: 'datesBanner.resetDatesBanner.button', diff --git a/src/courseware/course/celebration/WeeklyGoalCelebrationModal.jsx b/src/courseware/course/celebration/WeeklyGoalCelebrationModal.jsx index 402e72c7..6bc6c176 100644 --- a/src/courseware/course/celebration/WeeklyGoalCelebrationModal.jsx +++ b/src/courseware/course/celebration/WeeklyGoalCelebrationModal.jsx @@ -42,6 +42,7 @@ function WeeklyGoalCelebrationModal({ {daysPerWeek} {daysPerWeek === 1 ? 'time' : 'times'}), }} @@ -59,6 +60,7 @@ function WeeklyGoalCelebrationModal({ achieve higher performance), }} diff --git a/src/courseware/course/celebration/messages.js b/src/courseware/course/celebration/messages.js index 4f3f79d6..48bc484c 100644 --- a/src/courseware/course/celebration/messages.js +++ b/src/courseware/course/celebration/messages.js @@ -4,14 +4,17 @@ const messages = defineMessages({ completed: { id: 'learning.celebration.completed', defaultMessage: 'You just completed the first section of your course.', + description: 'Shown only once to leaner when they complete their first section', }, congrats: { id: 'learning.celebration.congrats', defaultMessage: 'Congratulations!', + description: 'Greeting for learners when they complete their weekly goal or finish the first section', }, earned: { id: 'learning.celebration.earned', defaultMessage: 'You earned it!', + description: 'Shown below congrats messaging when leaner complete a goal', }, emailSubject: { id: 'learning.celebration.emailSubject', @@ -26,6 +29,7 @@ const messages = defineMessages({ goalMet: { id: 'learning.celebration.goalMet', defaultMessage: 'You met your goal!', + description: 'Headline for (weekly gaol celebration) section in courseware', }, keepItUp: { id: 'learning.celebration.keepItUp', @@ -35,6 +39,7 @@ const messages = defineMessages({ share: { id: 'learning.celebration.share', defaultMessage: 'Take a moment to celebrate and share your progress.', + description: 'Text that precedes the (sharing icon) for goal accomplishment ', }, socialMessage: { id: 'learning.celebration.social', diff --git a/src/courseware/course/content-tools/calculator/Calculator.jsx b/src/courseware/course/content-tools/calculator/Calculator.jsx index 7fb3a867..db577600 100644 --- a/src/courseware/course/content-tools/calculator/Calculator.jsx +++ b/src/courseware/course/content-tools/calculator/Calculator.jsx @@ -99,12 +99,14 @@ class Calculator extends Component { tagName="h6" id="calculator.instructions" defaultMessage="For detailed information, see the {expressions_link}." + description="Text that precedes the link which redirects to help page calculator" values={{ expressions_link: ( ), @@ -115,6 +117,7 @@ class Calculator extends Component {

@@ -123,18 +126,21 @@ class Calculator extends Component {
  • @@ -147,6 +153,7 @@ class Calculator extends Component {
  • @@ -157,18 +164,21 @@ class Calculator extends Component { @@ -179,6 +189,7 @@ class Calculator extends Component { @@ -187,18 +198,21 @@ class Calculator extends Component {
  • @@ -216,6 +230,7 @@ class Calculator extends Component { @@ -225,6 +240,7 @@ class Calculator extends Component {
  • @@ -232,6 +248,7 @@ class Calculator extends Component {
  • @@ -239,6 +256,7 @@ class Calculator extends Component {
  • @@ -257,6 +275,7 @@ class Calculator extends Component { e, pi @@ -291,6 +310,7 @@ class Calculator extends Component { abs, exp, fact, factorial, ln, log2, log10, sqrt @@ -306,6 +326,7 @@ class Calculator extends Component { @@ -327,12 +348,14 @@ class Calculator extends Component { diff --git a/src/courseware/course/course-exit/CourseCelebration.jsx b/src/courseware/course/course-exit/CourseCelebration.jsx index 87c61b3a..71a18b8e 100644 --- a/src/courseware/course/course-exit/CourseCelebration.jsx +++ b/src/courseware/course/course-exit/CourseCelebration.jsx @@ -93,6 +93,7 @@ function CourseCelebration({ intl }) { You can download your certificate now and access it any time from your {dashboardLink} and {profileLink}." values={{ dashboardLink, profileLink }} + description="Recommending an action for learner when course certificate is available" />

    ); @@ -132,6 +133,7 @@ function CourseCelebration({ intl }) { defaultMessage="This course ended on {endDate} and final grades and certificates are scheduled to be available after {certAvailableDate}." values={{ endDate, certAvailableDate }} + description="This shown for leaner when they are eligible for certifcate but it't not available yet, it could because leaners just finished the course quickly!" />

    @@ -181,6 +183,7 @@ function CourseCelebration({ intl }) { defaultMessage="In order to generate a certificate, you must complete ID verification. {idVerificationSupportLink} now." values={{ idVerificationSupportLink }} + description="Its shown when learner are not verified thus it recommends going over the verification process" />

    ); @@ -199,6 +202,7 @@ function CourseCelebration({ intl }) { valuable credential to improve your job prospects and advance your career, or highlight your certificate in school applications." values={{ price: }} + description="Body text when the learner needs to upgrade to earn a certifcate and they have passed the course" />
    {getConfig().SUPPORT_URL_VERIFIED_CERTIFICATE && ( @@ -226,6 +230,7 @@ function CourseCelebration({ intl }) { code: ({offer.code}), percent: offer.percentage, }} + description="Shown if learner can use a discount code when they upgrade the course" /> ); diff --git a/src/courseware/course/course-exit/DashboardFootnote.jsx b/src/courseware/course/course-exit/DashboardFootnote.jsx index c6e3a107..37a22dd9 100644 --- a/src/courseware/course/course-exit/DashboardFootnote.jsx +++ b/src/courseware/course/course-exit/DashboardFootnote.jsx @@ -39,6 +39,7 @@ function DashboardFootnote({ intl, variant }) { )} diff --git a/src/courseware/course/course-exit/ProgramCompletion.jsx b/src/courseware/course/course-exit/ProgramCompletion.jsx index 816f4185..0114f65e 100644 --- a/src/courseware/course/course-exit/ProgramCompletion.jsx +++ b/src/courseware/course/course-exit/ProgramCompletion.jsx @@ -50,6 +50,7 @@ function ProgramCompletion({ id="courseExit.programCompletion.dashboardMessage" defaultMessage="To view your certificate status, check the Programs section of your {programLink}." values={{ programLink }} + description="Text that precedes link to program page" />

    {type === 'microbachelors' && ( diff --git a/src/courseware/course/course-exit/UpgradeFootnote.jsx b/src/courseware/course/course-exit/UpgradeFootnote.jsx index 0cfb46de..fb3cd59d 100644 --- a/src/courseware/course/course-exit/UpgradeFootnote.jsx +++ b/src/courseware/course/course-exit/UpgradeFootnote.jsx @@ -50,6 +50,7 @@ function UpgradeFootnote({ deadline, href, intl }) { expirationDate, upgradeLink, }} + description="Message body to tell learner until when the materiel will be available, and to suggest to upgrade" /> )} /> diff --git a/src/courseware/course/course-exit/messages.js b/src/courseware/course/course-exit/messages.js index 9f36d386..4a5ab1d7 100644 --- a/src/courseware/course/course-exit/messages.js +++ b/src/courseware/course/course-exit/messages.js @@ -34,6 +34,7 @@ const messages = defineMessages({ certificateHeaderUpgradable: { id: 'courseCelebration.certificateHeader.upgradable', defaultMessage: 'Upgrade to pursue a verified certificate', + description: 'Header when learner finished or pass the course but need to upgrade to get a certificate', }, certificateImage: { id: 'courseCelebration.certificateImage', @@ -43,10 +44,12 @@ const messages = defineMessages({ completedCourseHeader: { id: 'courseCelebration.completedCourseHeader', defaultMessage: 'You have completed your course.', + description: 'Header text for course exit section', }, congratulationsHeader: { id: 'courseCelebration.congratulationsHeader', defaultMessage: 'Congratulations!', + description: 'Greeting learner for finishing the course', }, congratulationsImage: { id: 'courseCelebration.congratulationsImage', @@ -56,10 +59,12 @@ const messages = defineMessages({ courseInProgressDescription: { id: 'courseExit.courseInProgressDescription', defaultMessage: 'It looks like there is more content in this course that will be released in the future. Look out for email updates or check back on your course for when this content will be available.', + description: 'Shown to learner when they finish all available assignments, but not the whole course', }, courseInProgressHeader: { id: 'courseExit.courseInProgressHeader', defaultMessage: 'More content is coming soon!', + description: 'Header when the status of the course not all of (contents or assignments) available yet', }, dashboardLink: { id: 'courseExit.dashboardLink', @@ -74,6 +79,7 @@ const messages = defineMessages({ endOfCourseDescription: { id: 'courseExit.endOfCourseDescription', defaultMessage: 'Unfortunately, you are not currently eligible for a certificate. You need to receive a passing grade to be eligible for a certificate.', + description: 'Shown to learner when they did not pass the course', }, endOfCourseHeader: { id: 'courseExit.endOfCourseHeader', @@ -108,10 +114,12 @@ const messages = defineMessages({ nextButtonComplete: { id: 'learn.sequence.navigation.complete.button', // for historical reasons defaultMessage: 'Complete the course', + description: 'This text is shown on the button which usually links to the next unit or assignment in course sequence, however when it is the last unit. The button will link to course exit page', }, nextButtonEnd: { id: 'courseExit.nextButton.endOfCourse', defaultMessage: 'Next (end of course)', + description: 'This shown for the button which links to the next unit, when learner did not pass the course', }, profileLink: { id: 'courseExit.profileLink', @@ -121,10 +129,12 @@ const messages = defineMessages({ programsLastCourseHeader: { id: 'courseExit.programs.lastCourse', defaultMessage: 'You have completed the last course in {title}!', + description: 'This shown to learner when the course they completed is the last one of a program, the program might be mircomaster, or microbachelors...etc', }, requestCertificateBodyText: { id: 'courseCelebration.requestCertificateBodyText', defaultMessage: 'In order to access your certificate, request it below.', + description: 'Shown when learner need to request the certifcate', }, requestCertificateButton: { id: 'courseCelebration.requestCertificateButton', @@ -139,6 +149,7 @@ const messages = defineMessages({ shareMessage: { id: 'courseCelebration.shareMessage', defaultMessage: 'Share your success on social media or email.', + description: 'Recommending an action when learner pass the course', }, socialMessage: { id: 'courseExit.social.shareCompletionMessage', @@ -156,10 +167,12 @@ const messages = defineMessages({ verificationPending: { id: 'courseCelebration.verificationPending', defaultMessage: 'Your ID verification is pending and your certificate will be available once approved.', + description: 'Shown when the status of verification is pending', }, verifiedCertificateSupportLink: { id: 'courseExit.verifiedCertificateSupportLink', defaultMessage: 'Learn more about verified certificates', + description: 'Anchor text for link that redirect to external help page about verified certificates', }, verifyIdentityButton: { id: 'courseCelebration.verifyIdentityButton', diff --git a/src/courseware/course/sequence/hidden-after-due/messages.js b/src/courseware/course/sequence/hidden-after-due/messages.js index 61706631..3222b80e 100644 --- a/src/courseware/course/sequence/hidden-after-due/messages.js +++ b/src/courseware/course/sequence/hidden-after-due/messages.js @@ -4,14 +4,17 @@ const messages = defineMessages({ header: { id: 'learn.hiddenAfterDue.header', defaultMessage: 'The due date for this assignment has passed.', + description: 'Shown when content of a course is longer available because due date passed', }, description: { id: 'learn.hiddenAfterDue.description', defaultMessage: 'Because the due date has passed, this assignment is no longer available.', + description: 'It explain why the content is not available', }, gradeAvailable: { id: 'learn.hiddenAfterDue.gradeAvailable', defaultMessage: 'If you have completed this assignment, your grade is available on the {progressPage}.', + description: 'Text that precedes link that redirect to progress page', }, progressPage: { id: 'learn.hiddenAfterDue.progressPage', diff --git a/src/courseware/course/sequence/honor-code/HonorCode.jsx b/src/courseware/course/sequence/honor-code/HonorCode.jsx index 0866d295..45254822 100644 --- a/src/courseware/course/sequence/honor-code/HonorCode.jsx +++ b/src/courseware/course/sequence/honor-code/HonorCode.jsx @@ -48,6 +48,7 @@ function HonorCode({ intl, courseId }) { siteName, link: {intl.formatMessage(messages['learn.honorCode.name'])}, }} + description="This is shown to learner, when course author wants to learners to explicity agree on their (Term of use or conduct), hence it links honor code page. " />

    diff --git a/src/courseware/social-share/messages.js b/src/courseware/social-share/messages.js index 3fc85ffd..d394be17 100644 --- a/src/courseware/social-share/messages.js +++ b/src/courseware/social-share/messages.js @@ -9,6 +9,7 @@ const messages = defineMessages({ shareEmail: { id: 'learning.social.shareEmail', defaultMessage: 'Share your progress via email.', + description: 'Text email share button', }, shareService: { id: 'learning.social.shareService', diff --git a/src/shared/streak-celebration/messages.js b/src/shared/streak-celebration/messages.js index e137bb2f..3578f4b5 100644 --- a/src/shared/streak-celebration/messages.js +++ b/src/shared/streak-celebration/messages.js @@ -4,6 +4,7 @@ const messages = defineMessages({ congratulations: { id: 'learning.streakCelebration.congratulations', defaultMessage: 'Congratulations!', + description: 'Shown to learners when are using the learning app for X days in a row', }, streakBody: { id: 'learning.streakCelebration.body', @@ -12,6 +13,7 @@ const messages = defineMessages({ streakButton: { id: 'learning.streakCelebration.button', defaultMessage: 'Keep it up', + description: 'Text on the button which closes the celebration dialog', }, streakButtonSrOnly: { id: 'learning.streakCelebration.buttonSrOnly', diff --git a/src/tab-page/messages.js b/src/tab-page/messages.js index 3e913c0d..e29ff0ed 100644 --- a/src/tab-page/messages.js +++ b/src/tab-page/messages.js @@ -4,10 +4,12 @@ const messages = defineMessages({ failure: { id: 'learning.loading.failure', defaultMessage: 'There was an error loading this course.', + description: 'Can be because internet connection or any technical other reason', }, loading: { id: 'learning.loading', defaultMessage: 'Loading course page…', + description: 'When content of the course is still loading...etc', }, });