diff --git a/credentials/apps/credentials/tests/test_views.py b/credentials/apps/credentials/tests/test_views.py index 2c73e1104..a1e735af2 100644 --- a/credentials/apps/credentials/tests/test_views.py +++ b/credentials/apps/credentials/tests/test_views.py @@ -150,6 +150,19 @@ def test_sharing_bar_with_staff_user(self): self.assertContains(response, "Print or share your certificate") + @responses.activate + def test_open_graph_metadata(self): + """Verify that the anonymous view contains OpenGraph metadata.""" + self.client.logout() + response = self._render_user_credential() + + self.assertContains(response, "og:url") + self.assertContains(response, "og:title") + self.assertContains(response, "og:description") + self.assertContains(response, '"og:type" content="image/png"') + self.assertContains(response, self.user_credential.get_absolute_url()) + self.assertContains(response, "I completed a course at ") + @responses.activate def test_awarded_with_logged_in_user(self): """Verify that the view renders awarded certificates with sharing bar.""" @@ -160,7 +173,7 @@ def test_awarded_with_logged_in_user(self): self.assertContains(response, "Print or share your certificate") self.assertContains(response, "Print this certificate") - self.assertContains(response=response, text=self.PROGRAM_NAME, count=2) + self.assertContains(response=response, text=self.PROGRAM_NAME, count=3) self.assertNotContains(response=response, text=self.CREDENTIAL_TITLE) self.assertEqual(response_context_data["user_credential"], self.user_credential) @@ -226,7 +239,7 @@ def test_awarded_with_custom_title(self): self.assertContains(response, "Print or share your certificate") self.assertNotContains(response=response, text=self.PROGRAM_NAME) - self.assertContains(response=response, text=self.CREDENTIAL_TITLE, count=2) + self.assertContains(response=response, text=self.CREDENTIAL_TITLE, count=3) def test_revoked(self): """Verify that the view returns 404 when the uuid is valid but certificate status diff --git a/credentials/apps/credentials/views.py b/credentials/apps/credentials/views.py index 8a1505c25..fbb32661f 100644 --- a/credentials/apps/credentials/views.py +++ b/credentials/apps/credentials/views.py @@ -188,6 +188,11 @@ def get_context_data(self, **kwargs): "program_name": program_details.title, "credential_title": program_details.credential_title, "org_name_string": org_name_string, + "share_url": self.request.build_absolute_uri(), + "share_image_url": program_details.organizations[0].certificate_logo_image_url, + "share_text": _("I completed a course at {platform_name}.").format( + platform_name=self.site_configuration.platform_name + ), } ) if program_details.hours_of_effort: diff --git a/credentials/conf/locale/en/LC_MESSAGES/django.mo b/credentials/conf/locale/en/LC_MESSAGES/django.mo new file mode 100644 index 000000000..d695284d1 Binary files /dev/null and b/credentials/conf/locale/en/LC_MESSAGES/django.mo differ diff --git a/credentials/conf/locale/en/LC_MESSAGES/django.po b/credentials/conf/locale/en/LC_MESSAGES/django.po new file mode 100644 index 000000000..e54b902b8 --- /dev/null +++ b/credentials/conf/locale/en/LC_MESSAGES/django.po @@ -0,0 +1,974 @@ +# edX translation file. +# Copyright (C) 2025 EdX +# This file is distributed under the GNU AFFERO GENERAL PUBLIC LICENSE. +# EdX Team , 2025. +# +msgid "" +msgstr "" +"Project-Id-Version: 0.1a\n" +"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n" +"POT-Creation-Date: 2023-06-13 08:00+0000\n" +"PO-Revision-Date: 2023-06-13 09:00+0000\n" +"Last-Translator: \n" +"Language-Team: openedx-translation \n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps/badges/admin.py +msgid "No rules specified." +msgstr "" + +#: apps/badges/admin.py +msgid "Badge templates were successfully updated." +msgstr "" + +#: apps/badges/admin.py +msgid "API key" +msgstr "" + +#: apps/badges/admin.py +msgid "Pre-configured from the environment." +msgstr "" + +#: apps/badges/admin.py +msgid "" +"\n" +" WARNING: avoid configuration updates on activated badges.\n" +" Active badge templates are continuously processed and learners may already have progress on them.\n" +" Any changes in badge template requirements (including data rules) will affect learners' experience!\n" +" " +msgstr "" + +#: apps/badges/admin.py +msgid "Active badge template cannot be deleted." +msgstr "" + +#: apps/badges/admin.py +msgid "Active badge templates cannot be deleted." +msgstr "" + +#: apps/badges/admin.py +msgid "icon" +msgstr "" + +#: apps/badges/admin.py +msgid "Active badge template must have at least one requirement." +msgstr "" + +#: apps/badges/admin.py +msgid "badge template" +msgstr "" + +#: apps/badges/admin.py +msgid "Failed to sync groups for API config: {}. {}" +msgstr "" + +#: apps/badges/admin.py +msgid "Accredible groups were successfully updated." +msgstr "" + +#: apps/badges/admin_forms.py +msgid "You can't provide an API key for a configured organization." +msgstr "" + +#: apps/badges/admin_forms.py +msgid "All requirements must belong to the same template." +msgstr "" + +#: apps/badges/admin_forms.py +msgid "Value must be a boolean." +msgstr "" + +#: apps/badges/issuers.py +msgid "Open edX internal user credential was revoked" +msgstr "" + +#: apps/badges/models.py +msgid "Put your Credly Organization ID here." +msgstr "" + +#: apps/badges/models.py +msgid "Credly API shared secret for Credly Organization." +msgstr "" + +#: apps/badges/models.py +msgid "Verbose name for Credly Organization." +msgstr "" + +#: apps/badges/models.py +msgid "Unique badge template ID." +msgstr "" + +#: apps/badges/models.py +msgid "Badge template name." +msgstr "" + +#: apps/badges/models.py +msgid "Badge template description." +msgstr "" + +#: apps/badges/models.py +msgid "Badge template type." +msgstr "" + +#: apps/badges/models.py +msgid "Synchronized state (auto-managed)." +msgstr "" + +#: apps/badges/models.py +msgid "Credly Organization - template owner." +msgstr "" + +#: apps/badges/models.py +msgid "Badge template this requirement serves for." +msgstr "" + +#: apps/badges/models.py +msgid "" +"Public signal type. Available events are configured in \"BADGES_CONFIG\" " +"setting. The crucial aspect for event to carry UserData in its payload." +msgstr "" + +#: apps/badges/models.py +msgid "Provide more details if needed." +msgstr "" + +#: apps/badges/models.py +msgid "" +"Optional. Group requirements together using the same Group ID for " +"interchangeable (OR processing logic)." +msgstr "" + +#: apps/badges/models.py +msgid "group" +msgstr "" + +#: apps/badges/models.py +msgid "" +"Public signal's data payload nested property path, e.g: " +"\"user.pii.username\"." +msgstr "" + +#: apps/badges/models.py +msgid "key path" +msgstr "" + +#: apps/badges/models.py +msgid "" +"Expected value comparison operator. " +"https://docs.python.org/3/library/operator.html" +msgstr "" + +#: apps/badges/models.py +msgid "Expected value for the nested property, e.g: \"cucumber1997\"." +msgstr "" + +#: apps/badges/models.py +msgid "expected value" +msgstr "" + +#: apps/badges/models.py +msgid "Parent requirement for this data rule." +msgstr "" + +#: apps/badges/models.py +msgid "Badge template this penalty serves for." +msgstr "" + +#: apps/badges/models.py +msgid "" +"Public signal type. Use namespaced types, e.g: " +"\"org.openedx.learning.student.registration.completed.v1\"" +msgstr "" + +#: apps/badges/models.py +msgid "Badge requirements for which this penalty is defined." +msgstr "" + +#: apps/badges/models.py +msgid "Badge penalties" +msgstr "" + +#: apps/badges/models.py +msgid "Parent penalty for this data rule." +msgstr "" + +#: apps/badges/models.py +msgid "badge progress records" +msgstr "" + +#: apps/badges/models.py +msgid "Group ID for the requirement." +msgstr "" + +#: apps/badges/models.py +msgid "Credly badge issuing state" +msgstr "" + +#: apps/badges/models.py +msgid "Credly service badge identifier" +msgstr "" + +#: apps/badges/models.py +msgid "Accredible API configuration name." +msgstr "" + +#: apps/badges/models.py +msgid "Accredible API key." +msgstr "" + +#: apps/badges/models.py +msgid "Accredible API configuration." +msgstr "" + +#: apps/badges/models.py +msgid "Accredible badge issuing state" +msgstr "" + +#: apps/badges/models.py +msgid "Accredible service badge identifier" +msgstr "" + +#: apps/core/admin.py +msgid "Activate selected entries" +msgstr "" + +#: apps/core/admin.py +#, python-brace-format +msgid "1 {model_name} entry was successfully activated." +msgstr "" + +#: apps/core/admin.py +#, python-brace-format +msgid "{count} {model_name} entries were successfully activated." +msgstr "" + +#: apps/core/admin.py +msgid "Deactivate selected entries" +msgstr "" + +#: apps/core/admin.py +#, python-brace-format +msgid "1 {model_name} entry was successfully deactivated." +msgstr "" + +#: apps/core/admin.py +#, python-brace-format +msgid "{count} {model_name} entries were successfully deactivated." +msgstr "" + +#: apps/core/admin.py +msgid "Add is_staff to selected entries" +msgstr "" + +#: apps/core/admin.py +#, python-brace-format +msgid "1 {model_name} entry was successfully changed." +msgstr "" + +#: apps/core/admin.py +#, python-brace-format +msgid "{count} {model_name} entries were successfully changed." +msgstr "" + +#: apps/core/admin.py +msgid "Remove is_staff from selected entries" +msgstr "" + +#: apps/core/admin.py +msgid "Add is_superuser to selected entries" +msgstr "" + +#: apps/core/admin.py +msgid "Remove is_superuser from selected entries" +msgstr "" + +#: apps/core/admin.py +msgid "Personal info" +msgstr "" + +#: apps/core/admin.py +msgid "Permissions" +msgstr "" + +#: apps/core/admin.py +msgid "Important dates" +msgstr "" + +#: apps/core/admin.py +msgid "URLs" +msgstr "" + +#: apps/core/admin.py +msgid "Social Sharing" +msgstr "" + +#: apps/core/forms.py +msgid "A Facebook app ID is required to enable Facebook sharing." +msgstr "" + +#: apps/core/models.py +msgid "Platform Name" +msgstr "" + +#: apps/core/models.py +msgid "Name of your Open edX platform" +msgstr "" + +#: apps/core/models.py +msgid "Segment Key" +msgstr "" + +#: apps/core/models.py +msgid "Segment write/API key." +msgstr "" + +#: apps/core/models.py +msgid "Theme Name" +msgstr "" + +#: apps/core/models.py +msgid "" +"Name of of the theme to use for this site. This value should be lower-cased." +msgstr "" + +#: apps/core/models.py +msgid "LMS base url for custom site" +msgstr "" + +#: apps/core/models.py +msgid "Root URL of this site's LMS (e.g. https://courses.stage.edx.org)" +msgstr "" + +#: apps/core/models.py +msgid "Catalog API URL" +msgstr "" + +#: apps/core/models.py +msgid "Root URL of the Catalog API (e.g. https://api.edx.org/catalog/v1/)" +msgstr "" + +#: apps/core/models.py +msgid "Terms of Service URL" +msgstr "" + +#: apps/core/models.py +msgid "Privacy Policy URL" +msgstr "" + +#: apps/core/models.py +msgid "Homepage URL" +msgstr "" + +#: apps/core/models.py +msgid "Company Name" +msgstr "" + +#: apps/core/models.py +msgid "Verified Certificate URL" +msgstr "" + +#: apps/core/models.py +msgid "Certificate Help URL" +msgstr "" + +#: apps/core/models.py +msgid "URL of page for questions about certificates" +msgstr "" + +#: apps/core/models.py +msgid "Enable Learner Records" +msgstr "" + +#: apps/core/models.py +msgid "Enable the Records feature. The LMS has a similar setting." +msgstr "" + +#: apps/core/models.py +msgid "Learner Records Help URL" +msgstr "" + +#: apps/core/models.py +msgid "URL of page for questions about Learner Records" +msgstr "" + +#: apps/core/models.py +msgid "Facebook App ID" +msgstr "" + +#: apps/core/models.py +msgid "Facebook app ID used for sharing" +msgstr "" + +#: apps/core/models.py +msgid "Twitter Username" +msgstr "" + +#: apps/core/models.py +msgid "Twitter username included in tweeted credentials. Do NOT include @." +msgstr "" + +#: apps/core/models.py +msgid "Enable Facebook sharing" +msgstr "" + +#: apps/core/models.py +msgid "Enable sharing via Facebook" +msgstr "" + +#: apps/core/models.py +msgid "Enable LinkedIn sharing" +msgstr "" + +#: apps/core/models.py +msgid "Enable sharing via LinkedIn" +msgstr "" + +#: apps/core/models.py +msgid "Enable Twitter sharing" +msgstr "" + +#: apps/core/models.py +msgid "Enable sharing via Twitter" +msgstr "" + +#: apps/core/models.py +msgid "Full Name" +msgstr "" + +#: apps/credentials/forms.py +msgid "" +"All authoring organizations of the program MUST have a certificate image " +"defined!" +msgstr "" + +#: apps/credentials/models.py +msgid "The image file size must be less than 250KB." +msgstr "" + +#: apps/credentials/models.py +msgid "Invalid course key." +msgstr "" + +#: apps/credentials/models.py +msgid "" +"Signatory organization name if its different from issuing organization." +msgstr "" + +#: apps/credentials/models.py +msgid "Image must be square PNG files. The file size should be under 250KB." +msgstr "" + +#: apps/credentials/models.py +msgid "awarded" +msgstr "" + +#: apps/credentials/models.py +msgid "revoked" +msgstr "" + +#: apps/credentials/models.py +msgid "" +"The certificate available date and time that is set in Studio and copied to " +"Credentials. This should be edited in Studio." +msgstr "" + +#: apps/credentials/models.py +msgid "Program UUID" +msgstr "" + +#: apps/credentials/models.py +msgid "" +"Display the associated organization's name (e.g. ACME University) instead of" +" its short name (e.g. ACMEx)" +msgstr "" + +#: apps/credentials/models.py +msgid "Use organization name" +msgstr "" + +#: apps/credentials/views.py +#, python-brace-format +msgid "{first_org} and {second_org}" +msgstr "" + +#: apps/credentials/views.py +#, python-brace-format +msgid "{series_of_orgs}, and {last_org}" +msgstr "" + +#: apps/credentials/views.py +#, python-brace-format +msgid "" +"I completed a course at {platform_name}. Take a look at my certificate:" +msgstr "" + +#: apps/credentials/views.py +#, python-brace-format +msgid "I completed a course at {platform_name}." +msgstr "" + +#: apps/credentials_theme_openedx/templates/openedx/credentials/programs/professional-certificate/certificate.html +msgid "" +"successfully completed all courses and received passing grades for a " +"Professional Certificate in" +msgstr "" + +#: apps/credentials_theme_openedx/templates/openedx/credentials/programs/professional-certificate/certificate.html +msgid "Professional Certificate" +msgstr "" + +#: apps/edx_django_extensions/views.py +msgid "Cache cleared." +msgstr "" + +#: apps/edx_django_extensions/views.py +#, python-brace-format +msgid "{action} is not a valid action." +msgstr "" + +#: apps/records/api.py +msgid "N/A" +msgstr "" + +#: apps/records/models.py +msgid "sent" +msgstr "" + +#: apps/records/models.py +msgid "other" +msgstr "" + +#: apps/records/models.py +msgid "User credit pathways can only be connected to credit pathways." +msgstr "" + +#: apps/verifiable_credentials/admin.py +msgid "Issuer ID" +msgstr "" + +#: apps/verifiable_credentials/admin.py +msgid "At least one Issuer must be always enabled!" +msgstr "" + +#: apps/verifiable_credentials/composition/open_badges.py +msgid "Open Badges Specification v3.0" +msgstr "" + +#: apps/verifiable_credentials/composition/open_badges.py +msgid "Open Badges Specification v3.0.1" +msgstr "" + +#: apps/verifiable_credentials/composition/status_list.py +#: apps/verifiable_credentials/storages/status_list.py +msgid "Status List 2021" +msgstr "" + +#: apps/verifiable_credentials/composition/verifiable_credentials.py +msgid "Verifiable Credentials Data Model v1.1" +msgstr "" + +#: apps/verifiable_credentials/issuance/main.py +#, python-brace-format +msgid "Couldn't find such issuance line: [{issuance_uuid}]" +msgstr "" + +#: apps/verifiable_credentials/issuance/main.py +#, python-brace-format +msgid "Seems credential isn't active anymore: [{credential_id}]" +msgstr "" + +#: apps/verifiable_credentials/issuance/main.py +msgid "Provided data didn't validate" +msgstr "" + +#: apps/verifiable_credentials/issuance/main.py +msgid "Issued verifiable credential can't be verified!" +msgstr "" + +#: apps/verifiable_credentials/issuance/models.py +msgid "Related Open edX learner credential" +msgstr "" + +#: apps/verifiable_credentials/issuance/models.py +msgid "Completeness indicator" +msgstr "" + +#: apps/verifiable_credentials/issuance/models.py +msgid "Issuer DID" +msgstr "" + +#: apps/verifiable_credentials/issuance/models.py +msgid "Target storage identifier" +msgstr "" + +#: apps/verifiable_credentials/issuance/models.py +msgid "Verifiable credential subject DID" +msgstr "" + +#: apps/verifiable_credentials/issuance/models.py +msgid "Verifiable credential specification to use" +msgstr "" + +#: apps/verifiable_credentials/issuance/models.py +msgid "Defines a position in the Status List sequence" +msgstr "" + +#: apps/verifiable_credentials/issuance/models.py +msgid "Keeps track on a corresponding user credential's status" +msgstr "" + +#: apps/verifiable_credentials/issuance/models.py +msgid "program certificate" +msgstr "" + +#: apps/verifiable_credentials/issuance/models.py +msgid "course certificate" +msgstr "" + +#: apps/verifiable_credentials/issuance/models.py +#, python-brace-format +msgid "program certificate for passing a program {program_title}" +msgstr "" + +#: apps/verifiable_credentials/issuance/models.py +#, python-brace-format +msgid ", with total {hours_of_effort} Hours of effort required to complete it" +msgstr "" + +#: apps/verifiable_credentials/issuance/models.py +#, python-brace-format +msgid "" +"{credential_type} is granted on program {program_title} completion offered " +"by {organizations}, in collaboration with {platform_name}. The " +"{program_title} program includes {course_count} course(s){effort_info}." +msgstr "" + +#: apps/verifiable_credentials/issuance/models.py +#, python-brace-format +msgid "" +"{credential_type} is granted on course {course_title} completion offered by " +"{organization}, in collaboration with {platform_name}" +msgstr "" + +#: apps/verifiable_credentials/issuance/models.py +#, python-brace-format +msgid "" +"{recipient_fullname} successfully completed all courses and received passing" +" grades for a Professional Certificate in {program_title} a program offered " +"by {organizations}, in collaboration with {platform_name}." +msgstr "" + +#: apps/verifiable_credentials/issuance/models.py +msgid "recipient" +msgstr "" + +#: apps/verifiable_credentials/issuance/models.py +#, python-brace-format +msgid "" +"{recipient_fullname} successfully completed a course and received a passing " +"grade for a Course Certificate in {course_title} a course offered by " +"{organization}, in collaboration with {platform_name}. " +msgstr "" + +#: apps/verifiable_credentials/issuance/models.py +msgid "" +"Issuer secret key. See: https://w3c-ccg.github.io/did-method-" +"key/#ed25519-x25519" +msgstr "" + +#: apps/verifiable_credentials/issuance/status_list.py +#, python-brace-format +msgid "Status List generation failed: [{issuer_id}]" +msgstr "" + +#: apps/verifiable_credentials/issuance/utils.py +msgid "" +"There are no enabled Issuance Configurations for some reason! At least one " +"must be always active." +msgstr "" + +#: apps/verifiable_credentials/management/commands/create_default_issuer.py +#, python-brace-format +msgid "Verifiable Credentials feature is not enabled [{feature_name}]" +msgstr "" + +#: apps/verifiable_credentials/rest_api/v1/views.py +msgid "Mandatory data is missing" +msgstr "" + +#: apps/verifiable_credentials/rest_api/v1/views.py +msgid "Credential identifier must be valid UUID: ['credential_uuid']" +msgstr "" + +#: apps/verifiable_credentials/rest_api/v1/views.py +#, python-format +msgid "No such user credential [%(credential_uuid)s]" +msgstr "" + +#: apps/verifiable_credentials/rest_api/v1/views.py +#, python-brace-format +msgid "" +"Provided storage backend ({storage_id}) isn't active. " +"Storages: {active_storages}" +msgstr "" + +#: apps/verifiable_credentials/rest_api/v1/views.py +#, python-brace-format +msgid "Can't find an Issuer with such ID [{issuer_id}]" +msgstr "" + +#: apps/verifiable_credentials/storages/learner_credential_wallet.py +msgid "Learner Credential Wallet" +msgstr "" + +#: templates/404.html +msgid "Page Not Found" +msgstr "" + +#: templates/500.html +msgid "Server Error" +msgstr "" + +#: templates/_actions.html +msgid "Print or share your certificate" +msgstr "" + +#: templates/_actions.html +msgid "Share this certificate via Facebook" +msgstr "" + +#: templates/_actions.html +msgid "Tweet this certificate" +msgstr "" + +#: templates/_actions.html +msgid "Add to LinkedIn profile" +msgstr "" + +#: templates/_actions.html +msgid "Add this certificate to your LinkedIn profile" +msgstr "" + +#: templates/_actions.html +msgid "Print" +msgstr "" + +#: templates/_actions.html +msgid "Print this certificate" +msgstr "" + +#: templates/_footer.html +msgid "Legal Policies" +msgstr "" + +#: templates/_footer.html +msgid "Terms of Service & Honor Code" +msgstr "" + +#: templates/_footer.html +msgid "Privacy Policy" +msgstr "" + +#: templates/_footer.html +msgid "" +"All rights reserved except where noted. edX, Open edX and the edX and Open " +"edX logos are registered trademarks or trademarks of edX Inc." +msgstr "" + +#: templates/_footer.html +msgid "Powered by" +msgstr "" + +#: templates/base.html templates/credentials/base.html +msgid "Skip to main content" +msgstr "" + +#: templates/credentials/base.html +#, python-format +msgid "Congratulations, %(user_name)s!" +msgstr "" + +#: templates/credentials/base.html +#, python-format +msgid "" +"You worked hard to earn your certificate from %(platform_name)s — share it " +"with colleagues, friends, and family to get the word out about what you " +"mastered in %(program_display_name)s." +msgstr "" + +#: templates/credentials/edx_ace/common/base_body.html +#, python-format +msgid "Go to %(platform_name)s Home Page" +msgstr "" + +#: templates/credentials/edx_ace/common/base_body.html +msgid "All rights reserved" +msgstr "" + +#: templates/credentials/edx_ace/programcertificateissuedmessage/email/body.html +#: templates/credentials/edx_ace/programcertificateissuedmessage/email/body.txt +msgid "Hello" +msgstr "" + +#: templates/credentials/edx_ace/programcertificateissuedmessage/email/body.html +#: templates/credentials/edx_ace/programcertificateissuedmessage/email/body.txt +#, python-format +msgid "" +"Congratulations on completing the %(program_title)s %(program_type)s " +"Program!" +msgstr "" + +#: templates/credentials/edx_ace/programcertificateissuedmessage/email/body.html +#, python-format +msgid "Sincerely,
The %(platform_name)s Team" +msgstr "" + +#: templates/credentials/edx_ace/programcertificateissuedmessage/email/body.txt +msgid "Sincerely" +msgstr "" + +#: templates/credentials/edx_ace/programcertificateissuedmessage/email/body.txt +#: templates/records/edx_ace/programcreditrequest/email/body.html +#: templates/records/edx_ace/programcreditrequest/email/body.txt +#, python-format +msgid "The %(platform_name)s Team" +msgstr "" + +#: templates/credentials/edx_ace/programcertificateissuedmessage/email/subject.txt +#, python-format +msgid "" +"Congratulations for finishing your %(program_title)s %(program_type)s " +"Program!" +msgstr "" + +#: templates/credentials/programs/base.html +msgid "Supported by the following organizations" +msgstr "" + +#: templates/credentials/programs/base.html +msgid "logo" +msgstr "" + +#. Translators: This phrase is followed by a statement of the learner's +#. achievement. e.g. 'has completed the course' +#: templates/credentials/programs/base.html +#, python-brace-format +msgid "" +"{start_span}This is to certify that{end_span} {start_strong} {user_name} " +"{end_strong}" +msgstr "" + +#. Translators: organization_name is the display name for the provided +#. organization e.g (e.g., Test Organization). +#: templates/credentials/programs/base.html +#, python-format +msgid "" +"a program offered by %(org_name_string)s, in collaboration with " +"%(platform_name)s." +msgstr "" + +#: templates/credentials/programs/base.html +msgid "Noted by" +msgstr "" + +#. Translators: This phrase appears on certificates to show the issue date +#: templates/credentials/programs/base.html +#, python-brace-format +msgid "Issued {month} {year}" +msgstr "" + +#: templates/credentials/programs/base.html +msgid "Valid Certificate ID" +msgstr "" + +#: templates/credentials/programs/base.html +msgid "Effort" +msgstr "" + +#: templates/credentials/programs/base.html +#, python-format +msgid "%(num_hours)s hour" +msgid_plural "%(num_hours)s hours" +msgstr[0] "" +msgstr[1] "" + +#: templates/credentials/programs/base.html +#, python-brace-format +msgid "" +"For tips and tricks on printing your certificate, view the {start_anchor}Web" +" Certificates help documentation{end_anchor}." +msgstr "" + +#: templates/management.html +msgid "Management View" +msgstr "" + +#: templates/management.html +msgid "Clear cache" +msgstr "" + +#: templates/records/edx_ace/programcreditrequest/email/body.html +#: templates/records/edx_ace/programcreditrequest/email/body.txt +#, python-format +msgid "" +"%(user_full_name)s has sent an updated program record for %(program_name)s." +msgstr "" + +#: templates/records/edx_ace/programcreditrequest/email/body.html +#: templates/records/edx_ace/programcreditrequest/email/body.txt +#, python-format +msgid "" +"%(user_full_name)s has sent their completed program record for " +"%(program_name)s." +msgstr "" + +#: templates/records/edx_ace/programcreditrequest/email/body.html +#: templates/records/edx_ace/programcreditrequest/email/body.txt +#, python-format +msgid "" +"%(user_full_name)s has sent their partially completed program record for " +"%(program_name)s." +msgstr "" + +#: templates/records/edx_ace/programcreditrequest/email/body.html +#: templates/records/edx_ace/programcreditrequest/email/body.txt +#, python-format +msgid "" +"%(user_full_name)s would like to apply for credit in the %(pathway_name)s." +msgstr "" + +#: templates/records/edx_ace/programcreditrequest/email/body.html +#: templates/records/edx_ace/programcreditrequest/email/body.txt +#, python-format +msgid "" +"Please view or download %(user_full_name)s’s public program record to " +"determine their credit eligibility status." +msgstr "" + +#: templates/records/edx_ace/programcreditrequest/email/body.html +#: templates/records/edx_ace/programcreditrequest/email/body.txt +msgid "View Program Record" +msgstr "" + +#: templates/records/edx_ace/programcreditrequest/email/body.html +#: templates/records/edx_ace/programcreditrequest/email/body.txt +msgid "Download Record (CSV)" +msgstr "" + +#: templates/records/edx_ace/programcreditrequest/email/subject.txt +#, python-format +msgid "%(program_name)s Updated Credit Request for %(user_full_name)s" +msgstr "" + +#: templates/records/edx_ace/programcreditrequest/email/subject.txt +#, python-format +msgid "%(program_name)s Credit Request for %(user_full_name)s" +msgstr "" + +#: urls.py +msgid "Credentials Administration" +msgstr "" diff --git a/credentials/conf/locale/en/LC_MESSAGES/djangojs.mo b/credentials/conf/locale/en/LC_MESSAGES/djangojs.mo new file mode 100644 index 000000000..d695284d1 Binary files /dev/null and b/credentials/conf/locale/en/LC_MESSAGES/djangojs.mo differ diff --git a/credentials/conf/locale/en/LC_MESSAGES/djangojs.po b/credentials/conf/locale/en/LC_MESSAGES/djangojs.po new file mode 100644 index 000000000..b6338fef5 --- /dev/null +++ b/credentials/conf/locale/en/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# edX translation file. +# Copyright (C) 2025 EdX +# This file is distributed under the GNU AFFERO GENERAL PUBLIC LICENSE. +# EdX Team , 2025. +# +msgid "" +msgstr "" +"Project-Id-Version: 0.1a\n" +"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n" +"POT-Creation-Date: 2023-06-13 08:00+0000\n" +"PO-Revision-Date: 2023-06-13 09:00+0000\n" +"Last-Translator: \n" +"Language-Team: openedx-translation \n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: static/components/Utils.jsx +msgid "{firstItems}, and {lastItem}" +msgstr "" diff --git a/credentials/conf/locale/eo/LC_MESSAGES/django.mo b/credentials/conf/locale/eo/LC_MESSAGES/django.mo index b8fdb03b7..38f651d08 100644 Binary files a/credentials/conf/locale/eo/LC_MESSAGES/django.mo and b/credentials/conf/locale/eo/LC_MESSAGES/django.mo differ diff --git a/credentials/conf/locale/eo/LC_MESSAGES/django.po b/credentials/conf/locale/eo/LC_MESSAGES/django.po index fa3f0e771..496cf2f21 100644 --- a/credentials/conf/locale/eo/LC_MESSAGES/django.po +++ b/credentials/conf/locale/eo/LC_MESSAGES/django.po @@ -621,6 +621,13 @@ msgstr "" "Ì çömplétéd ä çöürsé ät {platform_name}. Täké ä löök ät mý çértïfïçäté: " "Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тєтυя α#" +#: apps/credentials/views.py +#, python-brace-format +msgid "I completed a course at {platform_name}." +msgstr "" +"Ì çömplétéd ä çöürsé ät {platform_name}. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, " +"¢σηѕє¢#" + #: apps/credentials_theme_openedx/templates/openedx/credentials/programs/professional-certificate/certificate.html msgid "" "successfully completed all courses and received passing grades for a " diff --git a/credentials/conf/locale/rtl/LC_MESSAGES/django.mo b/credentials/conf/locale/rtl/LC_MESSAGES/django.mo index a04d27411..86fa7d72e 100644 Binary files a/credentials/conf/locale/rtl/LC_MESSAGES/django.mo and b/credentials/conf/locale/rtl/LC_MESSAGES/django.mo differ diff --git a/credentials/conf/locale/rtl/LC_MESSAGES/django.po b/credentials/conf/locale/rtl/LC_MESSAGES/django.po index aec207abe..3389d2cfe 100644 --- a/credentials/conf/locale/rtl/LC_MESSAGES/django.po +++ b/credentials/conf/locale/rtl/LC_MESSAGES/django.po @@ -530,6 +530,11 @@ msgid "" msgstr "" "Ɨ ɔøɯdlǝʇǝd ɐ ɔønɹsǝ ɐʇ {platform_name}. Ŧɐʞǝ ɐ løøʞ ɐʇ ɯʎ ɔǝɹʇᴉɟᴉɔɐʇǝ:" +#: apps/credentials/views.py +#, python-brace-format +msgid "I completed a course at {platform_name}." +msgstr "Ɨ ɔøɯdlǝʇǝd ɐ ɔønɹsǝ ɐʇ {platform_name}." + #: apps/credentials_theme_openedx/templates/openedx/credentials/programs/professional-certificate/certificate.html msgid "" "successfully completed all courses and received passing grades for a " diff --git a/credentials/templates/base.html b/credentials/templates/base.html index 8d758ae18..05845b839 100644 --- a/credentials/templates/base.html +++ b/credentials/templates/base.html @@ -30,6 +30,9 @@ {% block theme_meta %} {% endblock %} + {% block open_graph %} + {% endblock %} + {% block stylesheets %} {% endblock %} diff --git a/credentials/templates/credentials/base.html b/credentials/templates/credentials/base.html index df7cf7f7e..71c05be6d 100644 --- a/credentials/templates/credentials/base.html +++ b/credentials/templates/credentials/base.html @@ -6,6 +6,15 @@ {{ page_title }} | {% firstof site.name platform_name %} {% endblock %} +{% block open_graph %} + + + + + + +{% endblock %} + {% block content %}