From eb2f657323c27610010231763fe9c4dc85254686 Mon Sep 17 00:00:00 2001 From: LEGO Technix <109212476+lego-technix@users.noreply.github.com> Date: Fri, 18 Oct 2024 16:25:13 +0000 Subject: [PATCH 1/5] style(mon-pix): add back translations linting cf. https://github.com/godaddy/eslint-plugin-i18n-json/issues/62 --- mon-pix/eslint.config.cjs | 23 ++++++++++++++--------- mon-pix/package.json | 2 ++ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/mon-pix/eslint.config.cjs b/mon-pix/eslint.config.cjs index f6f5020525d..2e64c1158f3 100644 --- a/mon-pix/eslint.config.cjs +++ b/mon-pix/eslint.config.cjs @@ -7,13 +7,14 @@ const pixRecommendedConfig = require('@1024pix/eslint-plugin/config'); const globals = require('globals'); const babelParser = require('@babel/eslint-parser'); const emberParser = require('ember-eslint-parser'); +const i18nJsonPlugin = require('eslint-plugin-i18n-json'); const unconventionalJsFiles = ['blueprints/**/files/*', 'app/vendor/*']; const compiledOutputFiles = ['dist/*', 'tmp/*']; const dependenciesFiles = ['bower_components/*', 'node_modules/*']; const miscFiles = ['coverage/*', '!**/.*', '**/.eslintcache']; const emberTryFiles = ['.node_modules.ember-try/*', 'bower.json.ember-try', 'package.json.ember-try']; -const phraseGeneratedFiles = ['translations/*.json', '!translations/en.json', '!translations/fr.json']; +const nonPhraseGeneratedFiles = ['translations/en.json', 'translations/fr.json']; const nodeFiles = [ 'eslint.config.cjs', @@ -43,14 +44,7 @@ module.exports = [ qunitRecommendedConfig, prettierRecommendedConfig, { - ignores: [ - ...unconventionalJsFiles, - ...compiledOutputFiles, - ...dependenciesFiles, - ...miscFiles, - ...emberTryFiles, - ...phraseGeneratedFiles, - ], + ignores: [...unconventionalJsFiles, ...compiledOutputFiles, ...dependenciesFiles, ...miscFiles, ...emberTryFiles], }, { languageOptions: { @@ -141,4 +135,15 @@ module.exports = [ }, }, }, + { + files: nonPhraseGeneratedFiles, + plugins: { 'i18n-json': i18nJsonPlugin }, + processor: { + meta: { name: '.json' }, + ...i18nJsonPlugin.processors['.json'], + }, + rules: { + ...i18nJsonPlugin.configs.recommended.rules, + }, + }, ]; diff --git a/mon-pix/package.json b/mon-pix/package.json index 616520c3d77..db09cdf8630 100644 --- a/mon-pix/package.json +++ b/mon-pix/package.json @@ -31,6 +31,8 @@ "lint:js:uncached": "eslint .", "lint:scss": "stylelint 'app/**/*.scss'", "lint:scss:fix": "npm run lint:scss -- --fix", + "lint:translations": "eslint --format node_modules/eslint-plugin-i18n-json/formatter.js translations", + "lint:translations:fix": "npm run lint:translations -- --fix", "build": "ember build --environment $BUILD_ENVIRONMENT", "preinstall": "npx check-engine", "dev": "ember serve --proxy http://localhost:3000", From bd3e1fd03fa58e3791712235daac70caca80fec5 Mon Sep 17 00:00:00 2001 From: LEGO Technix <109212476+lego-technix@users.noreply.github.com> Date: Fri, 18 Oct 2024 16:32:14 +0000 Subject: [PATCH 2/5] style(mon-pix): fix empty translations forbidden by translation linter Linting error was: "Message is Empty." --- mon-pix/translations/en.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mon-pix/translations/en.json b/mon-pix/translations/en.json index 2287d9d9e4d..5dca05ea2fc 100644 --- a/mon-pix/translations/en.json +++ b/mon-pix/translations/en.json @@ -1154,8 +1154,8 @@ }, "presentation": { "link": { - "text": "", - "url": "" + "text": "Unused, but cannot be empty.", + "url": "Unused, but cannot be empty." }, "message": "'

'Hi {firstname}, welcome to your dashboard.'

'Quickly and easily access all your tests in progress.'
'Follow the evolution of your Pix score and check if your profile is ready for certification.'

'" }, From 0b753d6a16089c7c0115562088dc1157f134b7d3 Mon Sep 17 00:00:00 2001 From: LEGO Technix <109212476+lego-technix@users.noreply.github.com> Date: Fri, 18 Oct 2024 16:37:23 +0000 Subject: [PATCH 3/5] style(mon-pix): lint:translations:fix --- mon-pix/translations/en.json | 512 ++++++++++++++++---------------- mon-pix/translations/fr.json | 550 +++++++++++++++++------------------ 2 files changed, 531 insertions(+), 531 deletions(-) diff --git a/mon-pix/translations/en.json b/mon-pix/translations/en.json index 5dca05ea2fc..f9a941a8bf8 100644 --- a/mon-pix/translations/en.json +++ b/mon-pix/translations/en.json @@ -42,21 +42,21 @@ "confirm": "Confirm", "lets-go": "Let's go!", "quit": "Exit", + "refresh-page": "Refresh the page", "show-less": "Show less", "show-more": "Show more", "sign-out": "Sign out", "stay": "Stay", - "validate": "Validate", - "refresh-page": "Refresh the page" + "validate": "Validate" }, "api-error-messages": { "bad-request-error": "The data entered was not in the correct format.", "gateway-timeout-error": "The service is being slow. Please try again later.", "internal-server-error": "An error occurred, our teams are working on finding a solution. Please try again later.", "login-unauthorized-error": "There was an error in the email address or username/password entered.", + "login-unexpected-error": "Unable to connect. Please try again in a few moments. If the problem persists, '<'a href=\"https://pix.org/en/support\" target=\"blank\"'>'please contact us''.", "login-user-blocked-error": "Your account has reached the maximum number of failed login attempts and has been temporarily blocked. Please '<'a href=\"{url}\"'>'contact us'' to unblock it.", - "login-user-temporary-blocked-error": "You have reached too many failed login attempts. Please try again later or '<'a href=\"{url}\"'>'reset your password here''.", - "login-unexpected-error": "Unable to connect. Please try again in a few moments. If the problem persists, '<'a href=\"https://pix.org/en/support\" target=\"blank\"'>'please contact us''." + "login-user-temporary-blocked-error": "You have reached too many failed login attempts. Please try again later or '<'a href=\"{url}\"'>'reset your password here''." }, "cgu": { "cgu": "Pix terms of use", @@ -68,9 +68,9 @@ }, "companion": { "not-detected": { - "title": "The Pix Companion extension
is not detected", "description": " The extension may not be installed or enabled. Read the following documentation in order to resume your certification session. If necessary ask your invigilator.", - "link": "Go to documentation" + "link": "Go to documentation", + "title": "The Pix Companion extension
is not detected" } }, "data-protection-policy-information-banner": { @@ -134,21 +134,21 @@ }, "components": { "authentication": { + "new-password-input": { + "completed-message": "{ rulesCompleted } out of { rulesCount } requirements completed.", + "instructions-label": "Your password must comply with the following rules:", + "label": "Password" + }, "oidc-provider-selector": { "label": "Search for an organization", "placeholder": "Select an organization", "searchLabel": "Keyword search" }, "other-authentication-providers": { - "signup-heading": "Other ways to sign up", - "login-heading": "Other ways to log in", "continue-with-featured-identity-provider-link": "Continue with {featuredIdentityProvider}", - "select-another-organization-link": "Choose another organisation" - }, - "new-password-input": { - "label": "Password", - "instructions-label": "Your password must comply with the following rules:", - "completed-message": "{ rulesCompleted } out of { rulesCount } requirements completed." + "login-heading": "Other ways to log in", + "select-another-organization-link": "Choose another organisation", + "signup-heading": "Other ways to sign up" }, "signup-form": { "actions": { @@ -180,7 +180,6 @@ }, "invited": { "reconciliation": { - "title": "Join organization { organizationName }", "error-message": { "date-field": "Please use this format mm/dd/yyyy for the {fieldName} field.", "invalid-reconciliation-error": "Check your information ({fields}) or contact a teacher.", @@ -193,7 +192,8 @@ "sub-label": { "date": "With format mm/dd/yyyy, for example : {dateFormat}" } - } + }, + "title": "Join organization { organizationName }" } } }, @@ -247,15 +247,14 @@ "pages": { "account-recovery": { "errors": { - "title": "Oops, there's been a mistake!", "account-exists": "An account already exists with this e-mail address.", "key-expired": "The recovery link has expired, ", "key-expired-renew-demand-link": "renew your request here.", "key-invalid": "The recovery link does not exist.", - "key-used": "This account has already been recovered." + "key-used": "This account has already been recovered.", + "title": "Oops, there's been a mistake!" }, "find-sco-record": { - "title": "Recover my account", "backup-email-confirmation": { "ask-for-new-email-message": "or provide a new one", "email-already-exist-for-account-message": "The e-mail address below is already associated with your account:", @@ -299,8 +298,8 @@ "good-news": "Good news { firstName } !" }, "conflict": { - "title": "Conflict", "found-you-but": "{ firstName }, we found you but ...", + "title": "Conflict", "warning": "As a precaution, we need to check your details together." }, "contact-support": { @@ -308,13 +307,12 @@ "link-url": "https://pix.fr/support/form/aide-recuperer-mon-compte" }, "send-email-confirmation": { - "title": "Recovering your Pix account", "check-spam": "If you don't see this e-mail, check your spam folder.", "return": "Back", - "send-email": "We have just sent you an email to enable you to choose a password. You can now check your mailbox." + "send-email": "We have just sent you an email to enable you to choose a password. You can now check your mailbox.", + "title": "Recovering your Pix account" }, "student-information": { - "title": "You have left the school system and would like to regain access to Pix", "errors": { "empty-first-name": "The first name field is mandatory.", "empty-ine-ina": "The INE field is mandatory.", @@ -344,8 +342,10 @@ "subtitle": { "link": "reset your password here.", "text": "If you have an account with a valid e-mail address, " - } - } + }, + "title": "You have left the school system and would like to regain access to Pix" + }, + "title": "Recover my account" }, "support": { "recover": " for assistance.", @@ -367,41 +367,41 @@ } }, "assessment-banner": { - "title": "Question for the assessment: ", "modal": { - "title": "Do you need a break?", "actions": { "quit": { "extra-information": "Exit the assessment and return to the home page" } }, - "content": "All your progress is saved. You will be able to resume where you stopped." - } + "content": "All your progress is saved. You will be able to resume where you stopped.", + "title": "Do you need a break?" + }, + "title": "Question for the assessment: " }, "assessment-results": { - "title": "End of test", "actions": { "continue-pix-experience": "Continue my Pix experience", "return-to-homepage": "Return to homepage" }, "answers": { "header": "Your answers" - } + }, + "title": "End of test" }, "authentication": { "login": { "signup-button": "Sign up to Pix" }, "sso-selection": { - "title": "Choose another organization", "signin": { "link": "Log in", "message": "You will be redirected to the “{providerName}” connection page in order to identify yourself on Pix." }, "signup": { - "title": "Don't have an account?", - "link": "Sign up" - } + "link": "Sign up", + "title": "Don't have an account?" + }, + "title": "Choose another organization" } }, "autonomous-course": { @@ -412,9 +412,9 @@ "start-connected": "Begin the course" }, "texts": { - "title": "Start the course:", "first-course": "Is this your first course?", - "legal-informations": "With or without a Pix account, information relating to your progress in the customized test will be transmitted to us.'
'This information is used by Pix to improve our service. " + "legal-informations": "With or without a Pix account, information relating to your progress in the customized test will be transmitted to us.'
'This information is used by Pix to improve our service. ", + "title": "Start the course:" } } }, @@ -428,34 +428,34 @@ } }, "campaign-landing": { - "title": "Presentation", "assessment": { - "title": "Begin your customised test", "action": "Begin", "announcement": "Sign up or log in to the Pix platform and start your test.", "certify": { - "title": "Your answers to this customised test will build your personal digital skills profile on Pix.", - "description": "Depending on your situation and under certain conditions, you will be able to take the Pix Certification exam. It is recognized in the professional world and allows you to highlight your digital skills. For more information, ask the organizer of this customised test." + "description": "Depending on your situation and under certain conditions, you will be able to take the Pix Certification exam. It is recognized in the professional world and allows you to highlight your digital skills. For more information, ask the organizer of this customised test.", + "title": "Your answers to this customised test will build your personal digital skills profile on Pix." }, "details": "During this customised test, you will be able to:", "develop": { - "title": "See your results as you go along and view tips to improve.", - "description": "Every 5 questions, you will be able to see the right answers and receive advice as well as a personalized recommendation of tutorials to help you improve your skills." + "description": "Every 5 questions, you will be able to see the right answers and receive advice as well as a personalized recommendation of tutorials to help you improve your skills.", + "title": "See your results as you go along and view tips to improve." }, "evaluate": { - "title": "Measure your digital skills with fun and educational challenges that adapt to your level of proficiency (through an adaptive algorithm).", - "description": "You will have to carry out searches online, use your digital working environment, test your knowledge, etc." + "description": "You will have to carry out searches online, use your digital working environment, test your knowledge, etc.", + "title": "Measure your digital skills with fun and educational challenges that adapt to your level of proficiency (through an adaptive algorithm)." }, "legal": "By clicking on “Begin“, information about your progress will be shared with the organiser so they can assist you if necessary. At the end of your customised test, your results will be shared with your organisation when clicking on “Submit my results“.", + "title": "Begin your customised test", "title-with-username": "''{userFirstName}'','
' begin your customised test" }, "profiles-collection": { - "title": "Submit your profile", "action": "Let’s go!", "announcement": "Sign up or log in to the Pix platform and send your profile to the recipient organisation.", "legal": "Information about your progress will be sent to the organiser so they can help you if necessary. It will only be sent with your permission.", + "title": "Submit your profile", "title-with-username": "''{userFirstName}'','
' submit your profile" }, + "title": "Presentation", "warning-message": "If you are not { firstName } { lastName },", "warning-message-logout": "Please log out" }, @@ -463,7 +463,6 @@ "title": "Customised test" }, "campaign-participation-overview": { - "title": "Customised test", "card": { "finished-at": "Finished the {date}", "results": "Success rate: {result, number, ::percent}", @@ -482,23 +481,23 @@ "started": "In progress" }, "text-disabled": "This customised test has been deactivated by your organisation.'
'It is no longer possible to submit your results." - } + }, + "title": "Customised test" }, "certificate": { - "title": "Pix Certificate", "attestation": "Download my certificate of achievement", "back-link": "Return to my certificates", "candidate-birth": "Born on {birthdate}", "candidate-birth-complete": "Born on {birthdate} in {birthplace}", "certification-center": "Certification centre:", "competences": { - "title": "Certified competences", "information": "Your certified score was calculated based on the answers you gave whilst taking the certification. It may be different from the score shown on your profile. When you took the certification, it was possible to reach a maximum of level {maxReachableLevelOnCertificationDate} in each competence and {maxReachablePixCountOnCertificationDate} pix.", - "subtitle": "(levels out of {maxReachableLevel})" + "subtitle": "(levels out of {maxReachableLevel})", + "title": "Certified competences" }, "complementary": { - "title": "Other certification awarded", - "alternative": "Additional certification" + "alternative": "Additional certification", + "title": "Other certification awarded" }, "exam-date": "Completion date:", "hexagon-score": { @@ -508,33 +507,33 @@ "jury-info": "Notes from the examining body are not displayed on the verification page of your certificate.", "jury-title": "Notes from the examining body", "professionalizing-warning": "The Pix certificate is recognised as professionalising by France Compétences upon reaching a minimum score of 120 pix.", + "title": "Pix Certificate", "verification-code": { - "title": "Verification code", "alt": "Copy", "copied": "Copied!", "copy": "Copy the code", "info": "(?)", + "title": "Verification code", "tooltip": "Communicate this code to allow a third party to verify the authenticity of your certificate" } }, "certification-ender": { "candidate": { - "title": "Your test is finished!", "disconnect": "Log out of my account", "disconnect-tip": "If this is not your computer, please remember to log out.", "ended-by-supervisor": "Your invigilator has marked your certification test as completed. You cannot continue to answer questions.", "ended-due-to-finalization": "Your certification centre has ended the session. You can no longer answer questions.", - "remote-certification": "If you're taking your Pix certificate remotely, please make sure you log out from the monitoring tool once your test is finished." + "remote-certification": "If you're taking your Pix certificate remotely, please make sure you log out from the monitoring tool once your test is finished.", + "title": "Your test is finished!" }, "results": { - "title": "How can I view and share my certification results?", "disclaimer": "Your results, pending validation by the Pix team, will soon be available on your Pix account", "step-1": "Once logged in to your Pix account, you will be able to view your results in your profile under \"My certifications\" (accessible by clicking on your first name in the top right corner of the screen).", - "step-2": "You will be able to download and share your certificate of achievement or provide the verification code to be used on the Pix website." + "step-2": "You will be able to download and share your certificate of achievement or provide the verification code to be used on the Pix website.", + "title": "How can I view and share my certification results?" } }, "certification-instructions": { - "title": "Explanation of certification", "buttons": { "continuous": { "aria-label": "Continue to the next screen", @@ -550,7 +549,6 @@ }, "steps": { "1": { - "title": "Welcome to the Pix Certification", "paragraphs": { "1": { "text": "''The test is adaptive''. In other words, your ability to answer correctly (or not) the questions will determine in real-time the difficulty of the next questions." @@ -562,10 +560,10 @@ "text": "''It’s important for you to follow through to the end of the test'', and therefore to manage your time well. A ''penalty'' taking into account the number of questions left will be applied." } }, - "question": "How does the certification exam work?" + "question": "How does the certification exam work?", + "title": "Welcome to the Pix Certification" }, "2": { - "title": "How is the certification exam conducted?", "legend": { "strong-text": "32 QUESTIONS", "text": "1 H 45 min" @@ -580,33 +578,33 @@ "question": "How long does the exam last?", "text": "You have ''1h45'' maximum*." } - } + }, + "title": "How is the certification exam conducted?" }, "3": { - "title": "Two question modes", "images": { "focus-challenge": "Focus mode", "regular-challenge": "Free mode" }, "paragraphs": { "1": { - "title": "The free mode:", - "text": "For the ''free mode questions'', signaled by a green icon: you have the right to look for information on the web and to use the digital environment available." + "text": "For the ''free mode questions'', signaled by a green icon: you have the right to look for information on the web and to use the digital environment available.", + "title": "The free mode:" }, "2": { - "title": "The focus mode:", - "text": "For the ''focus mode questions'', signaled by a yellow icon: you won’t be allowed to leave the page nor to look for information." + "text": "For the ''focus mode questions'', signaled by a yellow icon: you won’t be allowed to leave the page nor to look for information.", + "title": "The focus mode:" } - } + }, + "title": "Two question modes" }, "4": { - "title": "What to do in case of a problem?", "paragraph": { "text": "''If you encounter a technical issue'' (for example, the picture can’t be viewed), follow these steps: '

' click on ''\"Report a problem with the question\"'', then on \"Yes, I’m sure\" and inform your invigilator." - } + }, + "title": "What to do in case of a problem?" }, "5": { - "title": "Rules to observe", "checkbox-label": "By ticking this box, I recognise that I have taken note of these rules and I agree to comply with them.", "list": { "miscellaneous": "''Mobilise any other mean that would directly give the answer'', without having to do the work required by the instructions.", @@ -616,13 +614,14 @@ "no-connected-device": "''Use a mobile phone or any other connected device'' (other than the computer used for the certification)", "no-forum": "''Peruse a self-help forum'' giving a direct answer to a question" }, - "text": "During the certification, it is forbidden to:" + "text": "During the certification, it is forbidden to:", + "title": "Rules to observe" } }, + "title": "Explanation of certification", "vocal-step-identifier": "Page {pageId} on {pageCount}" }, "certification-joiner": { - "title": "Join a certification session", "congratulation-banner": { "complementary-certification": { "eligible": "You are also eligible for the following complementary { count, plural, =1 {certification} other {certifications} } :", @@ -635,6 +634,7 @@ "message": "Well done, {fullName}, your Pix profile can now be certified." }, "error-messages": { + "candidate-not-eligible": "The account with which you are currently logged in isn’t eligible for this session of certification. '
' The information entered matches a candidate enrolled in the session for taking a complementary certification on it’s own. '
' Please check that you are logged with an account that is eligible to taking the complementary certification alone.", "generic": { "check-personal-info": "Check with the invigilator that your personal information matches the sign-in sheet.", "check-session-number": "Check the session number.", @@ -648,8 +648,7 @@ "wrong-account-sco-link": { "label": "How to find the account linked to the school/organisation ?", "url": "https://pix.fr/support/enseignement-scolaire/enseignant-ou-personnel-de-direction/que-faire-si-une-eleve-ne-parvient-pas-rejoindre-sa-session-de-certification" - }, - "candidate-not-eligible": "The account with which you are currently logged in isn’t eligible for this session of certification. '
' The information entered matches a candidate enrolled in the session for taking a complementary certification on it’s own. '
' Please check that you are logged with an account that is eligible to taking the complementary certification alone." + } }, "first-title": "Join a session", "form": { @@ -669,30 +668,30 @@ "fields-validation": { "session-number-error": "The session ID must only contain numbers." } - } + }, + "title": "Join a certification session" }, "certification-not-certifiable": { - "title": "Your profile cannot be certified yet.", "action": { "back": "Return to homepage" }, - "text": "To have your profile certified, you need to have reached at least level 1 in 5 competences." + "text": "To have your profile certified, you need to have reached at least level 1 in 5 competences.", + "title": "Your profile cannot be certified yet." }, "certification-results": { - "title": "Certification test finished", "action": { "confirm": "Confirm", "logout": "Log out" }, "finished": { - "title": "Well done, you’ve finished!", "description": "Your results will be available in your account shortly.", + "title": "Well done, you’ve finished!", "warning-text": "If you are not using your own computer, remember to log out." }, - "flag-alt": "Flag" + "flag-alt": "Flag", + "title": "Certification test finished" }, "certification-start": { - "title": "Join a certification session", "access-code": "Access code sent by the invigilator", "actions": { "submit": "Start my test" @@ -704,6 +703,8 @@ }, "info": "By clicking on “Start my test”, I agree to my identifying data, certification number and the circumstances in which the test was taken, as reported by the invigilator, being sent to Pix. Pix will use this information during the board of examiners’ deliberation to produce and archive my results and create my certificate. If this certification was ordered by an organisation, I agree to Pix sharing my results with them." }, + "complementary-subscription": "You are registered for the following additional certification :", + "core-and-complementary-subscriptions": "You are registered for the following additional certification in combination with the Pix Certification:", "error-messages": { "access-code-error": "This code does not exist or is no longer valid.", "candidate-not-authorized-to-resume": "Please contact your invigilator to resume your certification test.", @@ -717,11 +718,9 @@ "first-title": "You are about to begin your certification test.", "link-to-user-certification": "See my certificates", "non-eligible-subscription": "You are not eligible to {nonEligibleSubscriptionLabel}. However, you can still take your Pix Certification.", - "core-and-complementary-subscriptions": "You are registered for the following additional certification in combination with the Pix Certification:", - "complementary-subscription": "You are registered for the following additional certification :" + "title": "Join a certification session" }, "certifications-list": { - "title": "My Certifications", "header": { "certification-center": "certification centre", "date": "date", @@ -736,25 +735,20 @@ "title": "Certification cancelled" }, "fail": { - "title": "Certification not awarded", - "action": "Show details" + "action": "Show details", + "title": "Certification not awarded" }, "not-published": { "title": "Pending results" }, "success": { - "title": "Certification awarded", - "action": "see results" + "action": "see results", + "title": "Certification awarded" } - } + }, + "title": "My Certifications" }, "challenge": { - "title": { - "default": "Free Mode - Question {stepNumber} of {totalChallengeNumber}", - "focused": "Focus Mode - Question {stepNumber} of {totalChallengeNumber}", - "focused-out": "Failed - Focus Mode - Question {stepNumber} of {totalChallengeNumber}", - "timed-out": "Timed out - Question {stepNumber} of {totalChallengeNumber}" - }, "actions": { "continue": "Continue", "continue-go-to-next": "Continue and go to the next question", @@ -769,7 +763,6 @@ "numbered-label": "Answer {number}" }, "certification": { - "title": "Certification {certificationNumber}", "banner": { "certification-number": "Certification no." }, @@ -778,7 +771,8 @@ "description": "To report a problem, please call your invigilator and provide the following information:", "problem": "the problem encountered", "question-number": "the question number (in the top-right of the screen)" - } + }, + "title": "Certification {certificationNumber}" }, "embed-simulator": { "actions": { @@ -885,8 +879,8 @@ "guidance": "'

'*Make sure you write in this zone: for your benefit and the benefit of others, please stay objective and keep to the facts.'

'Do not enter any information about yourself or third parties, or any information related to health; religion; political, or philosophical opinions; trade union affiliation; ethnic origins; or penalties and convictions.'

'" }, "modal": { - "title": "Report confirmation", - "content": "'

'Do you confirm this problem report?'

'Thank you for this problem report, our team will review it soon. Every feedback helps us improve our services and the experience of all Pix users. Please note that we will not reach out to you on this topic. Thank you for your help.'

'" + "content": "'

'Do you confirm this problem report?'

'Thank you for this problem report, our team will review it soon. Every feedback helps us improve our services and the experience of all Pix users. Please note that we will not reach out to you on this topic. Thank you for your help.'

'", + "title": "Report confirmation" } }, "feedback-panel-v3": { @@ -909,20 +903,20 @@ }, "is-focused-challenge": { "info-alert": { - "title": "Answer this question without searching the internet or using any piece of software.", "adjusted-course-title": "Answer this question without using the Internet or any applications.", - "subtitle": "If you switch pages or tabs during a certification test, you answer will not be validated." + "subtitle": "If you switch pages or tabs during a certification test, you answer will not be validated.", + "title": "Answer this question without searching the internet or using any piece of software." } }, "live-alerts": { - "refresh": "Refresh the page", - "waiting-information": "Waiting for the invigilator...", + "challenge": { + "message": "Notify your invigilator so that they can check your problem" + }, "companion": { "message": "Notify your invigilator so that they can confirm the presence of the extension." }, - "challenge": { - "message": "Notify your invigilator so that they can check your problem" - } + "refresh": "Refresh the page", + "waiting-information": "Waiting for the invigilator..." }, "parts": { "answer-input": "Your answer", @@ -977,24 +971,26 @@ "aria-label": "Show question's warning", "close": "Ok, got it", "focused": { - "title": "Focus Mode", - "content": "''Stay on this page to answer!'
' Do not use the internet or any application to answer. Any activity outside this zone will be detected." + "content": "''Stay on this page to answer!'
' Do not use the internet or any application to answer. Any activity outside this zone will be detected.", + "title": "Focus Mode" }, "other": { - "title": "Free Mode", - "content": "To answer this question, feel free to search the internet or use an external application." + "content": "To answer this question, feel free to search the internet or use an external application.", + "title": "Free Mode" } } }, "timed": { "cannot-answer": "You've run out of time. Your answer will not be validated." + }, + "title": { + "default": "Free Mode - Question {stepNumber} of {totalChallengeNumber}", + "focused": "Focus Mode - Question {stepNumber} of {totalChallengeNumber}", + "focused-out": "Failed - Focus Mode - Question {stepNumber} of {totalChallengeNumber}", + "timed-out": "Timed out - Question {stepNumber} of {totalChallengeNumber}" } }, "checkpoint": { - "title": { - "assessment-progress": "Progression", - "end-of-assessment": "End of your assessment" - }, "actions": { "next-page": { "continue": "Continue", @@ -1011,6 +1007,10 @@ "completion-percentage": { "caption": "course progression", "label": "'

'You have completed '

'{completionPercentage}%'

' of your customised test.'

'" + }, + "title": { + "assessment-progress": "Progression", + "end-of-assessment": "End of your assessment" } }, "comparison-window": { @@ -1074,7 +1074,6 @@ "upcoming-tutorials": "You will soon find tutorials here to help you answer correctly to this type of question." }, "competence-details": { - "title": "Competence", "actions": { "continue": { "extra-information": "Resume competence {competenceName}", @@ -1092,9 +1091,9 @@ "description": "Reset available in \n { daysBeforeReset, plural, =0 {0 day.} =1 {1 day.} other {# days.} }", "label": "Reset", "modal": { - "title": "Competence reset", "important-message": "Your Pix { earnedPix } will be deleted from { scoreCardName }.", "important-message-above-level-one": "Your level { level } and your Pix { earnedPix } will be deleted from { scoreCardName }.", + "title": "Competence reset", "warning": { "certification": "If you are planning to certify your profile and results, this could affect your certification.", "header": "NB: ", @@ -1109,13 +1108,13 @@ }, "for-competence": "the competence {competence}", "next-level-info": "{ remainingPixToNextLevel } pix to level { level }", + "title": "Competence", "tutorials": { - "title": "Develop your skills", - "description": "Here are a selection of tutorials that will help you increase your pix score." + "description": "Here are a selection of tutorials that will help you increase your pix score.", + "title": "Develop your skills" } }, "competence-result": { - "title": "Results", "header": { "congratulations": "Congratulations!", "not-bad": "Not bad, but could be better!", @@ -1124,7 +1123,8 @@ "too-bad-subtitle": "It doesn’t seem to be your day, but you’ll do better next time.", "you-have-earned": "You have", "you-have-reached-level": "You reached" - } + }, + "title": "Results" }, "course": { "errors": { @@ -1132,25 +1132,24 @@ } }, "dashboard": { - "title": "Homepage", "campaigns": { - "title": "Customised tests", "resume": { "action": "Resume", "text": "

Don’t forget to submit your results!

" }, "subtitle": "Resume your customised tests or submit your results", - "tests-link": "All my customised tests" + "tests-link": "All my customised tests", + "title": "Customised tests" }, "empty-dashboard": { "link-to-competences": "See my skills", "message": "

Congrats! You've finished all the competences recommended for you!

Want to continue your Pix experience? You can try a competence again.

" }, "improvable-competences": { - "title": "Try again", "extra-information": "Access all the competences to retry", "profile-link": "See all", - "subtitle": "Ready to improve your score?" + "subtitle": "Ready to improve your score?", + "title": "Try again" }, "presentation": { "link": { @@ -1160,18 +1159,19 @@ "message": "'

'Hi {firstname}, welcome to your dashboard.'

'Quickly and easily access all your tests in progress.'
'Follow the evolution of your Pix score and check if your profile is ready for certification.'

'" }, "recommended-competences": { - "title": "Recommended", "extra-information": "Access all recommended competences", "profile-link": "See all competences", - "subtitle": "Discover the competences recommended for you." + "subtitle": "Discover the competences recommended for you.", + "title": "Recommended" }, "score": { "profile-link": "See my competences" }, "started-competences": { - "title": "In progress", - "subtitle": "Resume testing your skills, find your most recent tests here." - } + "subtitle": "Resume testing your skills, find your most recent tests here.", + "title": "In progress" + }, + "title": "Homepage" }, "error": { "content-text": "'

'Please refresh the page or return to homepage.'

'You can also contact us via ''the help centre form''specifying the error code below in the description.'

'Please excuse any inconvenience caused.'

'The Pix team.'

'", @@ -1180,18 +1180,17 @@ "evaluation-results": { "quit-results": { "modal": { - "title": "Oups, vous n’avez pas encore envoyé vos résultats !", + "actions": { + "cancel-to-share": "Rester pour envoyer", + "quit-without-sharing": "Quitter sans envoyer" + }, "content-information": "Envoyer vos résultats à l’organisateur du parcours est essentiel pour votre accompagnement. Restez sur cette page et cliquez sur ‘Envoyer mes résultats’ pour les transmettre.", "content-instruction": "Voulez-vous vraiment quitter sans les envoyer ?", - "actions": { - "quit-without-sharing": "Quitter sans envoyer", - "cancel-to-share": "Rester pour envoyer" - } + "title": "Oups, vous n’avez pas encore envoyé vos résultats !" } } }, "fill-in-campaign-code": { - "title": "I have a code", "description": "This code contains 9 letters and/or numbers. It is given by your school/organisation and can be used to start a customised test or to submit your profile", "errors": { "forbidden": "Oops! We can’t find you. Check your details to continue or contact the organiser.", @@ -1204,21 +1203,21 @@ "first-title-not-connected": "Enter your code", "label": "Enter your code to start", "mediacentre-start-campaign-modal": { - "title": "Customised test via Mediacentre", "actions": { "continue": "Continue", "quit": "Exit" }, "message": "To access the customised test:", "message-footer": "Connect to Pix via your Mediacentre", - "organised-by": "organised by " + "organised-by": "organised by ", + "title": "Customised test via Mediacentre" }, "start": "Start", + "title": "I have a code", "warning-message": "If you are not { firstName } { lastName },", "warning-message-logout": "please log out" }, "fill-in-certificate-verification-code": { - "title": "Verify the authenticity of a Pix Certificate", "description": "The Pix Certification assesses digital proficiency: please enter the \"verification code\" of the Pix certificate you wish to check.", "errors": { "missing-code": "Please enter the verification code in this format: P-XXXXXXXX", @@ -1228,10 +1227,10 @@ }, "first-title": "Verify the score of a Pix Certificate", "label": "Verification code (P-XXXXXXXX)", + "title": "Verify the authenticity of a Pix Certificate", "verify": "Verify the score" }, "fill-in-participant-external-id": { - "title": "Enter my username", "announcement": "The organiser needs the information below in order to help you:", "buttons": { "cancel": "Cancel", @@ -1241,18 +1240,18 @@ "max-length-id-pix-label": "Your { idPixLabel } must not exceed 255 characters.", "missing-id-pix-label": "Please enter your { idPixLabel }." }, - "first-title": "Before starting" + "first-title": "Before starting", + "title": "Enter my username" }, "focused-certification-challenge-instructions": { - "title": "Focus mode", "action": "I'm ready", - "description": "For the next question(s), you will not be allowed to leave the page." + "description": "For the next question(s), you will not be allowed to leave the page.", + "title": "Focus mode" }, "inscription": { "choose-language-aria-label": "Select a language" }, "join": { - "title": "Join", "button": "Let's go!", "fields": { "birthdate": { @@ -1290,7 +1289,6 @@ "subtitle": "Please fill in the missing information" }, "sup": { - "title": "Register your Pix account with {organizationName}.", "error": "Please check the information you have entered. If you already have a Pix account, log in with this account.", "fields": { "student-number": { @@ -1300,21 +1298,21 @@ "not-existing": "I don't have a student number" } }, - "message": "Enter the information as it appears on your student card to access the test and submit the results. Pix will remember it next time." - } + "message": "Enter the information as it appears on your student card to access the test and submit the results. Pix will remember it next time.", + "title": "Register your Pix account with {organizationName}." + }, + "title": "Join" }, "learning-more": { - "title": "To find out more", - "info": "These tutorial links have been suggested by Pix users." + "info": "These tutorial links have been suggested by Pix users.", + "title": "To find out more" }, "levelup-notif": { "obtained-level": "Level { level } reached!" }, "login-or-register": { - "title": "Log in or register", "invitation": "{ organizationName }", "login-form": { - "title": "I already have a Pix account.", "button": "Log in", "error": "There was an error in the email address or username/password entered.", "fields": { @@ -1331,10 +1329,10 @@ "other-identity": "Username: Contact your teacher to reset it", "reset-link": "Click here to reset it." }, + "title": "I already have a Pix account.", "unexpected-user-account-error": "There was an error in the email address or username entered. To continue, log in with your account in this format: " }, "register-form": { - "title": "Sign up", "button": "Sign up", "button-form": "Sign up", "fields": { @@ -1388,11 +1386,12 @@ }, "rgpd-legal-notice": "To know how your personnal data is processed, and what your rights are, you can read", "rgpd-legal-notice-link": "Mentions d'information.", - "rgpd-legal-notice-url": "https://pix.fr/politique-protection-donnees-personnelles-app-eleves" - } + "rgpd-legal-notice-url": "https://pix.fr/politique-protection-donnees-personnelles-app-eleves", + "title": "Sign up" + }, + "title": "Log in or register" }, "login-or-register-oidc": { - "title": "Create your Account", "error": { "account-conflict": "Ce compte est déjà associé à cet organisme. Veuillez vous connecter avec un autre compte ou contacter le support.", "data-sharing-refused": "We inform you that the transmission of your data, specified on the previous page, is essential to access and use the service.", @@ -1402,21 +1401,22 @@ "login-unauthorized-error": "There was an error in the email address or password entered." }, "login-form": { - "title": "I already have a Pix account", "button": "Log in", "description": "Log in to link your existing account and retrieve the skills that you have already assessed.", "email": "Email address", - "password": "Password" + "password": "Password", + "title": "I already have a Pix account" }, "register-form": { - "title": "Sign up", "button": "Create my account", "description": "An account will be created based on the information sent by the organisation", "information": { "family-name": "Last name : {familyName}", "given-name": "First name : {givenName}" - } - } + }, + "title": "Sign up" + }, + "title": "Create your Account" }, "modulix": { "beta-banner": "This module is in beta version. You can send us your feedback at the end of this module to help us improve it.", @@ -1440,15 +1440,15 @@ } }, "flashcards": { - "start": "Start", - "seeAnswer": "See the answer", - "seeAgain": "Review the question", - "nextCard": "Next", "answers": { - "notAtAll": "Not at all", "almost": "Almost", + "notAtAll": "Not at all", "yes": "Yes!" - } + }, + "nextCard": "Next", + "seeAgain": "Review the question", + "seeAnswer": "See the answer", + "start": "Start" }, "grain": { "continue": "Continue", @@ -1471,10 +1471,10 @@ "level": "Level", "objectives": "Objectives", "smallScreenModal": { - "title": "You seem to be using a small screen", "cancel": "Return to details", "description": "Some of the activities in this module may be difficult to perform on a small screen. For the best experience, we recommend that you use a computer.", - "startModule": "Start" + "startModule": "Start", + "title": "You seem to be using a small screen" }, "startModule": "Start module" }, @@ -1488,9 +1488,9 @@ "label": "Download file in {format} format" }, "flashcards": { + "answerDirection": "Did you have the answer?", "direction": "Look for the answer then turn the card", - "position": "Card {currentCardPosition}/{totalCards}", - "answerDirection": "Did you have the answer?" + "position": "Card {currentCardPosition}/{totalCards}" }, "grain": { "tag": { @@ -1519,10 +1519,10 @@ "direction": "Fill in the {count, plural, =1 {blank} other {blanks}}." }, "recap": { - "title": "Congratulations! Module completed", "backToModuleDetails": "Back to module details", "goToForm": "Answer the questionnaire", - "subtitle": "You have achieved the following objectives:" + "subtitle": "You have achieved the following objectives:", + "title": "Congratulations! Module completed" }, "stepper": { "step": { @@ -1536,11 +1536,10 @@ } }, "not-connected": { - "title": "Logged out", - "message": "You've been logged out.'
'Thanks! See you soon" + "message": "You've been logged out.'
'Thanks! See you soon", + "title": "Logged out" }, "oidc-reconciliation": { - "title": "Warning", "authentication-method-to-add": "Login method added:", "confirm": "Continue", "current-authentication-methods": "My current login methods:", @@ -1551,10 +1550,10 @@ "return": "Back", "sub-title": "A new login method is about to be added to your Pix account", "switch-account": "Change account", + "title": "Warning", "username": "Username" }, "password-reset-demand": { - "title": "Forgot your password?", "actions": { "back-home": "Return to homepage", "back-sign-in": "Return to log in page", @@ -1574,10 +1573,10 @@ "help": "If you do not receive this email, please check your spam folder.", "instructions": "An email explaining how to reset your password\n has been sent to the email address {email}.", "subtitle": "Password reset request" - } + }, + "title": "Forgot your password?" }, "profile": { - "title": "Competences", "accessibility": { "title": "Your Pix profile", "user-score": "Your Pix score", @@ -1607,15 +1606,15 @@ "reminder-send-campaign": "Don’t forget to submit your results!", "reminder-send-campaign-with-title": "customised test \"{title}\" finished. Don’t forget to submit your results!" }, + "title": "Competences", "total-score-helper": { - "title": "Why 1024 pix?", "explanation": "'

'That’s the maximum number of pix you can get when the 8 levels of the Pix framework will be available.'

'Today, ''the maximum number available is {maxReachablePixScore} pix'', corresponding to level {maxReachableLevel}.'

'", "icon": "Pix information", - "label": "Open tooltip" + "label": "Open tooltip", + "title": "Why 1024 pix?" } }, "profile-already-shared": { - "title": "Profile already submitted", "actions": { "continue": "Continue my Pix experience" }, @@ -1624,10 +1623,10 @@ "retry": { "button": "Resubmit my profile", "message": "{organization} encourages you to resubmit your profile to measure your progress." - } + }, + "title": "Profile already submitted" }, "reset-password": { - "title": "Change my password", "actions": { "sign-in": "Log in", "submit": "Send" @@ -1643,7 +1642,8 @@ } }, "instruction": "Enter your new password", - "succeed": "Your password has been changed successfully." + "succeed": "Your password has been changed successfully.", + "title": "Change my password" }, "result-item": { "aband": "No answer", @@ -1657,7 +1657,6 @@ "timedout": "Out of time" }, "send-profile": { - "title": "Submit my profile", "disabled-share": "This customised test has been deactivated by the organiser. It is no longer possible to submit results.", "errors": { "archived": "It is no longer possible to submit your profile as the organiser has archived the collection of profiles." @@ -1669,14 +1668,14 @@ "send": "Submit my profile", "shared": "Thank you, your profile has been submitted!" }, - "instructions": "You are about to submit the score and levels shown on your Pix profile. '
' Any changes in your profile after this submission will not be shared. '
' Remember to check your profile before submitting it!" + "instructions": "You are about to submit the score and levels shown on your Pix profile. '
' Any changes in your profile after this submission will not be shared. '
' Remember to check your profile before submitting it!", + "title": "Submit my profile" }, "shared-certification": { - "title": "Share my Pix Certificate", - "back-link": "Return to the verification’s page" + "back-link": "Return to the verification’s page", + "title": "Share my Pix Certificate" }, "sign-in": { - "title": "Log in", "actions": { "submit": "Log in" }, @@ -1696,28 +1695,28 @@ "first-title": "Log in", "forgotten-password": "Forgot your password?", "fwb": { - "title": "Log in via the FWB", "link": { "img": "FWB connect" - } + }, + "title": "Log in via the FWB" }, "or": "OR", "pole-emploi": { - "title": "Log in via Pôle Emploi", "link": { "img": "pôle emploi connect" - } + }, + "title": "Log in via Pôle Emploi" }, "subtitle": { "link": "Create an account", "text": "Don’t have a Pix account yet?" - } + }, + "title": "Log in" }, "sign-up": { - "title": "Sign up", "actions": { - "submit": "Sign up", - "login": "Log in to Pix" + "login": "Log in to Pix", + "submit": "Sign up" }, "errors": { "invalid-locale-format": "Provided locale \"{invalidLocale}\" has an invalid format.", @@ -1748,22 +1747,22 @@ "instructions": "The fields marked ''*'' are required", "subtitle": { "link": "log into your account" - } + }, + "title": "Sign up" }, "sitemap": { - "title": "Site map", "accessibility": { - "title": "Accessibility", - "help": "Help page to answer your questions about Pix's accessibility" + "help": "Help page to answer your questions about Pix's accessibility", + "title": "Accessibility" }, "cgu": { "policy": "Personal Data Protection Policy", "subcontractors": "List of recipient processors of Pix users’ personal data" }, - "resources": "Further information" + "resources": "Further information", + "title": "Site map" }, "skill-review": { - "title": "Result", "abstract": "You have mastered ''{rate, number, ::percent}'
' of the competences tested.", "abstract-title": "Your result for this customised test", "actions": { @@ -1782,14 +1781,14 @@ }, "badges-title": "Your thematic results", "details": { - "title": "Your results by competence", "caption": "Details of your results in percentage according to competences", "flash-pix-score": "{score, number, ::.} Pix", "header-result": "Results", "header-skill": "Competences tested", "percentage": "{rate, number, ::percent}", "progress-bar-label": "Competence result percentage", - "result": "Overall result" + "result": "Overall result", + "title": "Your results by competence" }, "disabled-share": "This customised test has been deactivated by the organiser.'
'It is no longer possible to submit results.", "error": "Oops, an error occurred!", @@ -1799,17 +1798,17 @@ "pixScore": "You got {score, number, ::.} Pix" }, "improve": { - "title": "Want to improve your results?", - "description": "You can retake some of the questions" + "description": "You can retake some of the questions", + "title": "Want to improve your results?" }, "information": "If you have already completed customised tests on Pix, questions you have previously answered have not been asked again. However, the result shown here is based on all of your answers.", "net-promoter-score": { - "title": "Your opinion counts!", "link": { "href": "https://pix.org/en", "label": "Give my feedback" }, - "text": "Take a few minutes to tell us what you thought of this test and help us improve it." + "text": "Take a few minutes to tell us what you thought of this test and help us improve it.", + "title": "Your opinion counts!" }, "not-finished": "You can’t submit your results yet, we still have a few questions to ask.", "organization-message": "Message of your organization", @@ -1831,46 +1830,47 @@ }, "send-title": "Submit your results", "stage": { - "title": "Competence results details", "caption": "Details of your results in percentage and stars according to competences", "masteryPercentage": "Success rate: {rate, number, ::percent}", - "starsAcquired": "{acquired, plural, =0 {no star} =1 {# star} other {# stars}} acquired out of {total}" + "starsAcquired": "{acquired, plural, =0 {no star} =1 {# star} other {# stars}} acquired out of {total}", + "title": "Competence results details" }, "tabs": { "aria-label": "3 tabs detailing your results", "results-details": { - "title": "Results details", "description": "Explore your skills in detail, organized by specific areas, to better understand your strengths and areas for improvement. Identify your strengths and areas where you can focus your efforts to improve further.", - "tab-label": "Details" + "tab-label": "Details", + "title": "Results details" }, "rewards": { - "title": "Rewards and expectations of the organizer", "description": "This section highlights the rewards received as well as the expectations of the course organizer. Find out how your performance was evaluated and identify areas for improvement for your skills development.", - "tab-label": "Rewards" + "tab-label": "Rewards", + "title": "Rewards and expectations of the organizer" }, "trainings": { - "title": "Want to learn more?", "description": "Get personalized training recommendations to continue progressing and feed your curiosity to help you achieve your full potential.", - "tab-label": "Trainings", "modal": { "content": "Send us your results to enable the course organizer to support you.'
'After sharing, you'll have access to these training courses!", "share-error": "There was an error sending your results. Please try again." - } + }, + "tab-label": "Trainings", + "title": "Want to learn more?" } }, + "title": "Result", "trainings": { - "title": "Do you want to learn more?", - "description": "Explore recommended training courses based on your results, in order to improve your skills!" + "description": "Explore recommended training courses based on your results, in order to improve your skills!", + "title": "Do you want to learn more?" } }, "terms-of-service": { - "title": "Terms and conditions of use", "cgu": "I agree to the ''terms and conditions of use of the Pix platform''", "form": { "button": "Continue", "error-message": "Please agree to the terms and conditions of use." }, - "message": "We have updated our terms and conditions of use. Please agree to them in order to continue your experience on Pix." + "message": "We have updated our terms and conditions of use. Please agree to them in order to continue your experience on Pix.", + "title": "Terms and conditions of use" }, "timed-challenge-instructions": { "action": "Start the challenge", @@ -1894,43 +1894,42 @@ } }, "tutorial": { - "title": "Campaign tutorial", "dot-action-title": "Display tutorial step {stepNumber}/{stepsCount}", "dots-nav-label": "Tutorial steps", "next": "Next", "next-title": "Show tutorial next step", "pages": { "page0": { - "title": "You can search online...", - "explanation": "If you do not know the answer to a question, \nyou can probably find it on the internet." + "explanation": "If you do not know the answer to a question, \nyou can probably find it on the internet.", + "title": "You can search online..." }, "page1": { - "title": "... with the exception of specific questions", - "explanation": "If you see this picture, only use your own knowledge! \nDon’t search the internet or use your other equipments.\n" + "explanation": "If you see this picture, only use your own knowledge! \nDon’t search the internet or use your other equipments.\n", + "title": "... with the exception of specific questions" }, "page2": { - "title": "There’s no time limit!", - "explanation": "Take all the time you need to finish your customised test. \nIf a question is timed, we will let you know." + "explanation": "Take all the time you need to finish your customised test. \nIf a question is timed, we will let you know.", + "title": "There’s no time limit!" }, "page3": { - "title": "Tutorials", - "explanation": "Access tutorials to learn more \nabout each question and improve." + "explanation": "Access tutorials to learn more \nabout each question and improve.", + "title": "Tutorials" }, "page4": { - "title": "Adapted levels of difficulty", - "explanation": "Based on your answers, \nPix adapts the difficulty of the questions." + "explanation": "Based on your answers, \nPix adapts the difficulty of the questions.", + "title": "Adapted levels of difficulty" } }, "pass": "Ignore", "pass-title": "Ignore tutorial and start my customised test", - "start": "Start my customised test" + "start": "Start my customised test", + "title": "Campaign tutorial" }, "tutorial-panel": { - "title": "For better results next time", - "info": "These tutorial links have been suggested by Pix users." + "info": "These tutorial links have been suggested by Pix users.", + "title": "For better results next time" }, "update-expired-password": { - "title": "Change my password", "button": "Reset", "fields": { "error": "Your password must contain at least 8 characters and include at least one uppercase letter, one lowercase letter and one number.", @@ -1940,12 +1939,11 @@ "first-title": "Reset my password", "go-to-login": "Log in", "subtitle": "Choose a new password to continue", + "title": "Change my password", "validation": "Your password has been updated." }, "user-account": { - "title": "My account", "account-update-email": { - "title": "Change your email address", "email-information": "Please provide a valid email address: it will be used to reset your password if you forget it. '
'This will change the email address you use to log in.", "fields": { "errors": { @@ -1967,10 +1965,10 @@ } }, "password-information": "Enter your password to confirm", - "save-button": "Confirm" + "save-button": "Confirm", + "title": "Change your email address" }, "account-update-email-with-validation": { - "title": "Change your email address", "fields": { "errors": { "empty-password": "Your password can't be empty.", @@ -1986,7 +1984,8 @@ "security-information": "The security of your personal information is essential. We will therefore check that it’s really you who made the request. Please enter your password to get a verification code." } }, - "save-button": "Get a verification code" + "save-button": "Get a verification code", + "title": "Change your email address" }, "connexion-methods": { "authentication-methods": { @@ -2001,7 +2000,6 @@ }, "email-confirmed": "Email address verified.", "email-verification": { - "title": "Verify your email address", "code-explanation-of-use": "To move from one field to another, use either the tabulation, or the left and right arrows of the keyboard. To fill in a field, type a number between 1 and 9, or use the up and down arrows of the keyboard.", "code-label": "Field", "code-legend": "Input the verification code you received by email", @@ -2015,6 +2013,7 @@ "unknown-error": "An error has occurred. Please try again or contact the support." }, "send-back-the-code": "Send the code again", + "title": "Verify your email address", "update-successful": "Your email address has been changed!" }, "language": { @@ -2026,25 +2025,25 @@ "first-name": "First name", "last-name": "Last name", "menu-link-title": "Personal information" - } + }, + "title": "My account" }, "user-tests": { "title": "My customised tests" }, "user-trainings": { - "title": "My trainings", - "description": "Keep improving thanks to the recommended training courses at the end of your test." + "description": "Keep improving thanks to the recommended training courses at the end of your test.", + "title": "My trainings" }, "user-tutorials": { - "title": "My tutorials", "description": "Improve with the help of tutorials suggested by the Pix users' community.", "empty-list-info": { - "title": "You haven’t saved anything yet", "description": { "part1": "As you test your skills, tutorials are recommended. Click on the bookmark icon", "part2": "to save the ones you want to see again here!" }, - "image-link": "images/illustrations/user-tutorials/illustration-en.svg" + "image-link": "images/illustrations/user-tutorials/illustration-en.svg", + "title": "You haven’t saved anything yet" }, "filter": "Filter", "label": "Tutorials", @@ -2068,20 +2067,21 @@ }, "recommended": "Recommended", "recommended-empty": { - "title": "{firstName}, find your favorite tutorials here", "description": "To get tutorials recommendations adapted to your level, you must start a test.", - "link": "Let's go" + "link": "Let's go", + "title": "{firstName}, find your favorite tutorials here" }, "saved": "Saved", "saved-empty": { - "title": "No tutorials saved yet", - "description": "You need to save a tutorial for it to be displayed here." + "description": "You need to save a tutorial for it to be displayed here.", + "title": "No tutorials saved yet" }, "sidebar": { "reset": "Reset", "reset-aria-label": "Reset and deselect all filters", "see-results": "See the results" - } + }, + "title": "My tutorials" } } } diff --git a/mon-pix/translations/fr.json b/mon-pix/translations/fr.json index d55cb061b41..efea1b0a460 100644 --- a/mon-pix/translations/fr.json +++ b/mon-pix/translations/fr.json @@ -42,21 +42,21 @@ "confirm": "Confirmer", "lets-go": "C'est parti !", "quit": "Quitter", + "refresh-page": "Rafraîchir la page", "show-less": "Afficher moins", "show-more": "Afficher plus", "sign-out": "Se déconnecter", "stay": "Rester", - "validate": "Valider", - "refresh-page": "Rafraîchir la page" + "validate": "Valider" }, "api-error-messages": { "bad-request-error": "Les données que vous avez soumises ne sont pas au bon format.", "gateway-timeout-error": "Le service subit des ralentissements. Veuillez réessayer ultérieurement.", "internal-server-error": "Une erreur interne est survenue, nos équipes sont en train de résoudre le problème. Veuillez réessayer ultérieurement.", "login-unauthorized-error": "L'adresse e-mail ou l'identifiant et/ou le mot de passe saisis sont incorrects.", + "login-unexpected-error": "Impossible de se connecter. Merci de réessayer dans quelques instants. Si le problème persiste, '<'a href=\"https://pix.fr/support\" target=\"blank\"'>'merci de nous contacter''.", "login-user-blocked-error": "Votre compte est bloqué car vous avez effectué trop de tentatives de connexion. Pour le débloquer, '<'a href=\"{url}\"'>'contactez-nous''.", - "login-user-temporary-blocked-error": "Vous avez effectué trop de tentatives de connexion. Réessayez plus tard ou cliquez sur '<'a href=\"{url}\"'>'mot de passe oublié'' pour le réinitialiser.", - "login-unexpected-error": "Impossible de se connecter. Merci de réessayer dans quelques instants. Si le problème persiste, '<'a href=\"https://pix.fr/support\" target=\"blank\"'>'merci de nous contacter''." + "login-user-temporary-blocked-error": "Vous avez effectué trop de tentatives de connexion. Réessayez plus tard ou cliquez sur '<'a href=\"{url}\"'>'mot de passe oublié'' pour le réinitialiser." }, "cgu": { "cgu": "conditions d'utilisation", @@ -68,9 +68,9 @@ }, "companion": { "not-detected": { - "title": "L’extension Pix Companion
n’est pas détectée", "description": "L’extension n’est peut-être pas installée ou activée. Consultez le document suivant afin de reprendre votre session de certification. Si besoin contactez le surveillant.", - "link": "Accéder à la documentation" + "link": "Accéder à la documentation", + "title": "L’extension Pix Companion
n’est pas détectée" } }, "data-protection-policy-information-banner": { @@ -134,21 +134,21 @@ }, "components": { "authentication": { + "new-password-input": { + "completed-message": "{ rulesCompleted } sur { rulesCount } complétées.", + "instructions-label": "Votre mot de passe doit respecter les règles suivantes :", + "label": "Mot de passe" + }, "oidc-provider-selector": { "label": "Rechercher une organisation", "placeholder": "Sélectionner un organisme", "searchLabel": "Recherche par mots-clés" }, "other-authentication-providers": { - "signup-heading": "Autres moyens d’inscription", - "login-heading": "Autres moyens de connexion", "continue-with-featured-identity-provider-link": "Continuer avec {featuredIdentityProvider}", - "select-another-organization-link": "Choisir une autre organisation" - }, - "new-password-input": { - "label": "Mot de passe", - "instructions-label": "Votre mot de passe doit respecter les règles suivantes :", - "completed-message": "{ rulesCompleted } sur { rulesCount } complétées." + "login-heading": "Autres moyens de connexion", + "select-another-organization-link": "Choisir une autre organisation", + "signup-heading": "Autres moyens d’inscription" }, "signup-form": { "actions": { @@ -180,7 +180,6 @@ }, "invited": { "reconciliation": { - "title": "Rejoignez l'organisation { organizationName }", "error-message": { "date-field": "Veuillez utiliser le format jj/mm/aaaa pour la saisie du champ {fieldName}", "invalid-reconciliation-error": "Vérifiez vos informations ({fields}) ou contactez un enseignant.", @@ -193,7 +192,8 @@ "sub-label": { "date": "Au format (jj/mm/aaaa), par exemple : {dateFormat}" } - } + }, + "title": "Rejoignez l'organisation { organizationName }" } } }, @@ -247,15 +247,14 @@ "pages": { "account-recovery": { "errors": { - "title": "Oups, une erreur est survenue !", "account-exists": "Un compte existe déjà avec cette adresse e-mail.", "key-expired": "Le lien de récupération est expiré, ", "key-expired-renew-demand-link": "renouvelez votre demande ici.", "key-invalid": "Le lien de récupération n’existe pas.", - "key-used": "Ce compte a déjà été récupéré." + "key-used": "Ce compte a déjà été récupéré.", + "title": "Oups, une erreur est survenue !" }, "find-sco-record": { - "title": "Récupérer mon compte", "backup-email-confirmation": { "ask-for-new-email-message": "sinon fournissez en une nouvelle", "email-already-exist-for-account-message": "L’adresse e-mail ci-dessous est déjà associée à votre compte :", @@ -299,8 +298,8 @@ "good-news": "Bonne nouvelle { firstName } !" }, "conflict": { - "title": "Conflit", "found-you-but": "{ firstName }, on vous a retrouvé mais ...", + "title": "Conflit", "warning": "Par précaution nous devons vérifier vos données ensemble." }, "contact-support": { @@ -308,13 +307,12 @@ "link-url": "https://pix.fr/support/form/aide-recuperer-mon-compte" }, "send-email-confirmation": { - "title": "Récupération de votre compte Pix", "check-spam": "Si vous ne voyez pas cet e-mail, vérifiez vos courriers indésirables.", "return": "Retour", - "send-email": "Nous venons de vous adresser un mail qui vous permettra de choisir un mot de passe. Vous pouvez consulter dès maintenant votre messagerie." + "send-email": "Nous venons de vous adresser un mail qui vous permettra de choisir un mot de passe. Vous pouvez consulter dès maintenant votre messagerie.", + "title": "Récupération de votre compte Pix" }, "student-information": { - "title": "Vous avez quitté le système scolaire et vous souhaitez récupérer votre accès à Pix", "errors": { "empty-first-name": "Le champ prénom est obligatoire.", "empty-ine-ina": "Le champ INE est obligatoire.", @@ -344,8 +342,10 @@ "subtitle": { "link": "réinitialisez votre mot de passe ici.", "text": "Si vous possédez un compte avec une adresse e-mail valide, " - } - } + }, + "title": "Vous avez quitté le système scolaire et vous souhaitez récupérer votre accès à Pix" + }, + "title": "Récupérer mon compte" }, "support": { "recover": " pour obtenir une assistance.", @@ -367,41 +367,41 @@ } }, "assessment-banner": { - "title": "Épreuve pour l'évaluation : ", "modal": { - "title": "Besoin d'une pause ?", "actions": { "quit": { "extra-information": "Quitter l'épreuve et retourner à la page d'accueil" } }, - "content": "Tous vos progrès sont enregistrés. Vous pourrez reprendre là où vous vous êtes arrêté." - } + "content": "Tous vos progrès sont enregistrés. Vous pourrez reprendre là où vous vous êtes arrêté.", + "title": "Besoin d'une pause ?" + }, + "title": "Épreuve pour l'évaluation : " }, "assessment-results": { - "title": "Fin du test", "actions": { "continue-pix-experience": "Continuer mon expérience Pix", "return-to-homepage": "Revenir à l'accueil" }, "answers": { "header": "Vos réponses" - } + }, + "title": "Fin du test" }, "authentication": { "login": { "signup-button": "S'inscrire sur Pix" }, "sso-selection": { - "title": "Choisir une autre organisation", "signin": { "link": "Je me connecte", "message": "Vous allez être redirigé(e) vers la page de connexion de « {providerName} » afin de vous identifier sur Pix." }, "signup": { - "title": "Vous n'avez pas de compte ?", - "link": "Inscrivez-vous" - } + "link": "Inscrivez-vous", + "title": "Vous n'avez pas de compte ?" + }, + "title": "Choisir une autre organisation" } }, "autonomous-course": { @@ -412,9 +412,9 @@ "start-connected": "Je commence" }, "texts": { - "title": "Commencez le parcours :", "first-course": "C'est votre premier parcours Pix ?", - "legal-informations": "Avec ou sans compte Pix, les informations relatives à votre avancée dans le parcours nous seront transmises.'
'Ces informations sont à l'usage de Pix pour l'amélioration du service." + "legal-informations": "Avec ou sans compte Pix, les informations relatives à votre avancée dans le parcours nous seront transmises.'
'Ces informations sont à l'usage de Pix pour l'amélioration du service.", + "title": "Commencez le parcours :" } } }, @@ -428,34 +428,34 @@ } }, "campaign-landing": { - "title": "Présentation", "assessment": { - "title": "Commencez votre parcours Pix", "action": "Je commence", "announcement": "Inscrivez-vous ou connectez-vous sur la plateforme Pix et lancez votre test.", "certify": { - "title": "Les réponses validées dans ce parcours contribueront à alimenter votre profil personnel de compétences numériques sur Pix.", - "description": "En fonction de votre situation et dans certaines conditions, vous pouvez accéder à la certification Pix, reconnue par le monde professionnel, qui permet de valoriser vos compétences numériques. Pour plus d’informations, renseignez-vous auprès de l’organisateur du parcours." + "description": "En fonction de votre situation et dans certaines conditions, vous pouvez accéder à la certification Pix, reconnue par le monde professionnel, qui permet de valoriser vos compétences numériques. Pour plus d’informations, renseignez-vous auprès de l’organisateur du parcours.", + "title": "Les réponses validées dans ce parcours contribueront à alimenter votre profil personnel de compétences numériques sur Pix." }, "details": "Durant ce parcours, vous aurez l’opportunité de :", "develop": { - "title": "Découvrir vos résultats au fil du test et consulter des indices pour progresser.", - "description": "Toutes les 5 questions, vous visualisez les bonnes réponses et obtenez des conseils et une recommandation personnalisée de tutoriels pour développer vos compétences." + "description": "Toutes les 5 questions, vous visualisez les bonnes réponses et obtenez des conseils et une recommandation personnalisée de tutoriels pour développer vos compétences.", + "title": "Découvrir vos résultats au fil du test et consulter des indices pour progresser." }, "evaluate": { - "title": "Mesurer vos compétences numériques avec des défis ludiques et apprenants qui s'adaptent à votre niveau de maîtrise (via un algorithme adaptatif).", - "description": "Vous serez amené à effectuer des recherches sur internet, utiliser votre environnement numérique de travail, tester vos connaissances, etc." + "description": "Vous serez amené à effectuer des recherches sur internet, utiliser votre environnement numérique de travail, tester vos connaissances, etc.", + "title": "Mesurer vos compétences numériques avec des défis ludiques et apprenants qui s'adaptent à votre niveau de maîtrise (via un algorithme adaptatif)." }, "legal": "En cliquant sur “Je commence”, les informations relatives à votre avancée dans le parcours seront transmises à l’organisateur du parcours pour lui permettre de vous accompagner. A la fin du parcours, en cliquant sur le bouton “J’envoie mes résultats” vos résultats seront transmis à l’organisateur.", + "title": "Commencez votre parcours Pix", "title-with-username": "''{userFirstName}'','
' commencez votre parcours" }, "profiles-collection": { - "title": "Envoyez votre profil", "action": "C'est parti !", "announcement": "Inscrivez-vous ou connectez-vous sur la plateforme Pix et envoyez votre profil à l'organisation destinataire.", "legal": "Les informations relatives à votre profil PIX seront transmises à l'organisateur pour lui permettre de vous accompagner. Elle ne seront transmises qu'avec votre consentement.", + "title": "Envoyez votre profil", "title-with-username": "''{userFirstName}'','
' envoyez votre profil" }, + "title": "Présentation", "warning-message": "Vous n'êtes pas { firstName } { lastName } ?", "warning-message-logout": "Se déconnecter" }, @@ -463,7 +463,6 @@ "title": "Parcours" }, "campaign-participation-overview": { - "title": "Parcours", "card": { "finished-at": "Terminé le {date}", "results": "{result, number, ::percent} de réussite", @@ -482,23 +481,23 @@ "started": "En cours" }, "text-disabled": "Parcours désactivé par votre organisation.'
'Vous ne pouvez plus envoyer vos résultats." - } + }, + "title": "Parcours" }, "certificate": { - "title": "Certificat Pix", "attestation": "Télécharger mon attestation", "back-link": "Retour à mes certifications", "candidate-birth": "Né(e) le {birthdate}", "candidate-birth-complete": "Né(e) le {birthdate} à {birthplace}", "certification-center": "Centre de certification :", "competences": { - "title": "Compétences certifiées", "information": "Votre score certifié a été calculé en fonction de vos réponses lors du passage de la certification. Il peut donc différer du nombre de Pix affiché dans votre profil. Le jour de votre certification il était possible d’atteindre le niveau {maxReachableLevelOnCertificationDate} des compétences et {maxReachablePixCountOnCertificationDate} pix au maximum.", - "subtitle": "(niveaux sur {maxReachableLevel})" + "subtitle": "(niveaux sur {maxReachableLevel})", + "title": "Compétences certifiées" }, "complementary": { - "title": "Autre certification obtenue", - "alternative": "Certification complémentaire" + "alternative": "Certification complémentaire", + "title": "Autre certification obtenue" }, "exam-date": "Date de passage :", "hexagon-score": { @@ -508,33 +507,33 @@ "jury-info": "Les observations du jury ne sont pas partagées sur la page de vérification de votre certificat.", "jury-title": "Observations du jury", "professionalizing-warning": "Le certificat Pix est reconnu comme professionnalisant par France compétences à compter d’un score minimal de 120 pix", + "title": "Certificat Pix", "verification-code": { - "title": "Code de vérification", "alt": "Copier", "copied": "Code copié !", "copy": "Copier le code", "info": "(?)", + "title": "Code de vérification", "tooltip": "Communiquez ce code pour permettre à un tiers de vérifier l'authenticité de votre certificat" } }, "certification-ender": { "candidate": { - "title": "Test terminé !", "disconnect": "Déconnecter mon compte", "disconnect-tip": "Si cet ordinateur n’est pas le vôtre, pensez à vous déconnecter.", "ended-by-supervisor": "Votre surveillant a mis fin à votre test de certification. Vous ne pouvez plus continuer de répondre aux questions.", "ended-due-to-finalization": "La session a été finalisée par votre centre de certification. Vous ne pouvez plus continuer de répondre aux questions.", - "remote-certification": "Si vous passez votre certification Pix à distance, veillez à bien vous déconnecter de l’outil de surveillance une fois votre test terminé." + "remote-certification": "Si vous passez votre certification Pix à distance, veillez à bien vous déconnecter de l’outil de surveillance une fois votre test terminé.", + "title": "Test terminé !" }, "results": { - "title": "Consulter et partager mes résultats de certification ?", "disclaimer": "Vos résultats, en attente de validation par les équipes Pix, seront bientôt disponibles depuis votre compte Pix", "step-1": "Il vous suffit de vous connecter à votre compte Pix, vous pourrez retrouver vos résultats dans votre profil, rubrique \"Mes certifications\" (accessible en cliquant sur votre prénom en haut à droite de l'écran).", - "step-2": "Vous pourrez télécharger votre attestation de certification et la partager, ou encore communiquer le code de vérification à utiliser sur le site de Pix." + "step-2": "Vous pourrez télécharger votre attestation de certification et la partager, ou encore communiquer le code de vérification à utiliser sur le site de Pix.", + "title": "Consulter et partager mes résultats de certification ?" } }, "certification-instructions": { - "title": "Explication de la certification", "buttons": { "continuous": { "aria-label": "Continuer vers l'écran suivant", @@ -550,7 +549,6 @@ }, "steps": { "1": { - "title": "Bienvenue à la certification Pix", "paragraphs": { "1": { "text": "''Il s'agit d'un test adaptatif''. C’est-à-dire, que votre capacité à répondre correctement (ou non) aux questions détermine en temps réel la difficulté des questions suivantes." @@ -562,10 +560,10 @@ "text": "''Il est important d'aller jusqu'au bout du test'', et donc de bien gérer votre temps. Une ''pénalité'' tenant compte du nombre de questions restantes sera appliquée." } }, - "question": "Comment fonctionne le test de certification ?" + "question": "Comment fonctionne le test de certification ?", + "title": "Bienvenue à la certification Pix" }, "2": { - "title": "Comment se passe le test de certification ?", "legend": { "strong-text": "32 QUESTIONS", "text": "1 H 45 min" @@ -580,33 +578,33 @@ "question": "La durée du test ?", "text": "Vous avez au maximum ''1h45*''." } - } + }, + "title": "Comment se passe le test de certification ?" }, "3": { - "title": "Deux modes de questions", "images": { "focus-challenge": "Mode focus", "regular-challenge": "Mode libre" }, "paragraphs": { "1": { - "title": "Le mode libre :", - "text": "Pour les questions en ''mode libre'', signalées par une icône verte : vous aurez le droit d’effectuer des recherches sur le web et d’utiliser l’environnement numérique à disposition." + "text": "Pour les questions en ''mode libre'', signalées par une icône verte : vous aurez le droit d’effectuer des recherches sur le web et d’utiliser l’environnement numérique à disposition.", + "title": "Le mode libre :" }, "2": { - "title": "Le mode focus :", - "text": "Pour les questions en ''mode focus'', signalées par une icône jaune : vous ne serez pas autorisé à quitter la page et à faire des recherches." + "text": "Pour les questions en ''mode focus'', signalées par une icône jaune : vous ne serez pas autorisé à quitter la page et à faire des recherches.", + "title": "Le mode focus :" } - } + }, + "title": "Deux modes de questions" }, "4": { - "title": "Que faire en cas de problème ?", "paragraph": { "text": "''En cas de problème technique'' (par exemple, l'image refuse de s'afficher), suivez ces étapes : '

' cliquez sur ''\"Signaler un problème avec la question\"'', puis sur \"Oui, je suis sûr(e)\" et informez votre surveillant." - } + }, + "title": "Que faire en cas de problème ?" }, "5": { - "title": "Règles à respecter", "checkbox-label": "En cochant cette case, je reconnais avoir pris connaissance de ces règles et je m’engage à les respecter.", "list": { "miscellaneous": "''Mobiliser tout autre moyen délivrant directement la réponse'', sans avoir effectué le travail requis par la consigne.", @@ -616,13 +614,14 @@ "no-connected-device": "''Utiliser un téléphone mobile ou tout appareil connecté'' (autre que l’ordinateur mobilisé dans le cadre de la certification)", "no-forum": "''Consulter un forum d’entraide'' apportant directement la réponse à une épreuve" }, - "text": "En certification, il est interdit de :" + "text": "En certification, il est interdit de :", + "title": "Règles à respecter" } }, + "title": "Explication de la certification", "vocal-step-identifier": "Page {pageId} sur {pageCount}" }, "certification-joiner": { - "title": "Rejoindre une session de certification", "congratulation-banner": { "complementary-certification": { "eligible": "Vous êtes également éligible { count, plural, =1 {à la certification complémentaire} other {aux certifications complémentaires} } :", @@ -635,6 +634,7 @@ "message": "Bravo {fullName}, votre profil Pix est certifiable." }, "error-messages": { + "candidate-not-eligible": "Le compte avec lequel vous êtes actuellement connecté n’est pas éligible à cette session de certification. '
' Les informations saisies correspondent à un candidat inscrit à la session en certification complémentaire seule. '
' Vérifiez que vous êtes connecté au compte éligible pour le passage de la certification complémentaire seule.", "generic": { "check-personal-info": "Vérifiez auprès du surveillant la correspondance de vos informations personnelles avec la feuille d'émargement.", "check-session-number": "Vérifiez le numéro de session.", @@ -648,8 +648,7 @@ "wrong-account-sco-link": { "label": "Comment trouver le compte lié à l'établissement ?", "url": "https://pix.fr/support/enseignement-scolaire/enseignant-ou-personnel-de-direction/que-faire-si-une-eleve-ne-parvient-pas-rejoindre-sa-session-de-certification" - }, - "candidate-not-eligible": "Le compte avec lequel vous êtes actuellement connecté n’est pas éligible à cette session de certification. '
' Les informations saisies correspondent à un candidat inscrit à la session en certification complémentaire seule. '
' Vérifiez que vous êtes connecté au compte éligible pour le passage de la certification complémentaire seule." + } }, "first-title": "Rejoindre une session", "form": { @@ -669,30 +668,30 @@ "fields-validation": { "session-number-error": "Le numéro de session est composé uniquement de chiffres." } - } + }, + "title": "Rejoindre une session de certification" }, "certification-not-certifiable": { - "title": "Votre profil n'est pas encore certifiable.", "action": { "back": "Retour à l'accueil" }, - "text": "Pour faire certifier votre profil, vous devez avoir obtenu un niveau supérieur à 0 dans 5 compétences minimum." + "text": "Pour faire certifier votre profil, vous devez avoir obtenu un niveau supérieur à 0 dans 5 compétences minimum.", + "title": "Votre profil n'est pas encore certifiable." }, "certification-results": { - "title": "Test terminé", "action": { "confirm": "Je confirme", "logout": "Se déconnecter" }, "finished": { - "title": "Bravo, c'est fini !", "description": "Vos résultats seront prochainement disponibles depuis votre compte.", + "title": "Bravo, c'est fini !", "warning-text": "Si cet ordinateur n’est pas le vôtre, pensez à vous déconnecter." }, - "flag-alt": "Drapeau" + "flag-alt": "Drapeau", + "title": "Test terminé" }, "certification-start": { - "title": "Rejoindre une session de certification", "access-code": "Code d'accès communiqué par le surveillant", "actions": { "submit": "Commencer mon test" @@ -704,6 +703,8 @@ }, "info": "En cliquant sur \"Commencer mon test\", j’accepte que mes données d’identité, le numéro de certification et les circonstances de la passation telles que renseignées par le surveillant soient communiquées à Pix. Pix les utilisera lors de la délibération du jury pour produire et archiver mes résultats et pour éditer mon certificat. Si cette certification m’a été prescrite par une organisation, j’accepte que Pix lui communique mes résultats." }, + "complementary-subscription": "Vous êtes inscrit à la certification complémentaire suivante :", + "core-and-complementary-subscriptions": "Vous êtes inscrit à la certification complémentaire suivante en plus de la certification Pix :", "error-messages": { "access-code-error": "Ce code n’existe pas ou n’est plus valide.", "candidate-not-authorized-to-resume": "Merci de contacter votre surveillant afin qu'il autorise la reprise de votre test.", @@ -717,11 +718,9 @@ "first-title": "Vous allez commencer votre test de certification", "link-to-user-certification": "Voir mes certifications", "non-eligible-subscription": "Vous n'êtes pas éligible à {nonEligibleSubscriptionLabel}. Vous pouvez néanmoins passer votre certification Pix.", - "core-and-complementary-subscriptions": "Vous êtes inscrit à la certification complémentaire suivante en plus de la certification Pix :", - "complementary-subscription": "Vous êtes inscrit à la certification complémentaire suivante :" + "title": "Rejoindre une session de certification" }, "certifications-list": { - "title": "Mes Certifications", "header": { "certification-center": "centre de certification", "date": "date", @@ -736,25 +735,20 @@ "title": "Certification annulée" }, "fail": { - "title": "Certification non obtenue", - "action": "Afficher le détail" + "action": "Afficher le détail", + "title": "Certification non obtenue" }, "not-published": { "title": "En attente du résultat" }, "success": { - "title": "Certification obtenue", - "action": "voir les résultats" + "action": "voir les résultats", + "title": "Certification obtenue" } - } + }, + "title": "Mes Certifications" }, "challenge": { - "title": { - "default": "Mode libre - Question {stepNumber} sur {totalChallengeNumber}", - "focused": "Mode focus - Question {stepNumber} sur {totalChallengeNumber}", - "focused-out": "Échoué - Mode focus - Question {stepNumber} sur {totalChallengeNumber}", - "timed-out": "Temps écoulé - Question {stepNumber} sur {totalChallengeNumber}" - }, "actions": { "continue": "Poursuivre", "continue-go-to-next": "Je continue et je vais à la prochaine question", @@ -769,7 +763,6 @@ "numbered-label": "Réponse {number}" }, "certification": { - "title": "Certification {certificationNumber}", "banner": { "certification-number": "N° de certification" }, @@ -778,7 +771,8 @@ "description": "Pour signaler un problème, appelez votre surveillant et communiquez-lui les informations suivantes :", "problem": "le problème rencontré", "question-number": "le numéro de la question (en haut à droite de l'écran)" - } + }, + "title": "Certification {certificationNumber}" }, "embed-simulator": { "actions": { @@ -885,8 +879,8 @@ "guidance": "'

'* Soyez attentifs à ce que vous écrivez dans cette zone : restez objectif et factuel pour votre intérêt et celui des autres.'

'Notamment, ne saisissez aucune information, vous concernant ou concernant des tiers, sur la santé, la religion, les opinions politiques, syndicales et philosophiques, les origines ethniques, ainsi que sur les sanctions et condamnations.'

'" }, "modal": { - "title": "Confirmation du signalement", - "content": "'

'Êtes-vous certain de vouloir signaler ce problème ?'

'Nous vous remercions pour votre signalement qui sera examiné attentivement par l'équipe de Pix. Nous prenons en compte tous vos commentaires pour améliorer continuellement nos services et l'expérience utilisateur. Nous ne pourrons pas vous donner de réponse personnalisée. Merci pour votre collaboration.'

'" + "content": "'

'Êtes-vous certain de vouloir signaler ce problème ?'

'Nous vous remercions pour votre signalement qui sera examiné attentivement par l'équipe de Pix. Nous prenons en compte tous vos commentaires pour améliorer continuellement nos services et l'expérience utilisateur. Nous ne pourrons pas vous donner de réponse personnalisée. Merci pour votre collaboration.'

'", + "title": "Confirmation du signalement" } }, "feedback-panel-v3": { @@ -909,20 +903,20 @@ }, "is-focused-challenge": { "info-alert": { - "title": "Essayez de répondre à cette question sans vous aider d’internet ou d’applications.", "adjusted-course-title": "Répondez à cette question sans vous aider d’internet ou d’applications.", - "subtitle": "En certification, si vous changez de page, votre réponse ne sera pas validée." + "subtitle": "En certification, si vous changez de page, votre réponse ne sera pas validée.", + "title": "Essayez de répondre à cette question sans vous aider d’internet ou d’applications." } }, "live-alerts": { - "refresh": "Rafraîchir la page", - "waiting-information": "En attente du surveillant...", + "challenge": { + "message": "Prévenez votre surveillant afin qu'il puisse constater votre problème." + }, "companion": { "message": "Merci de contacter votre surveillant afin qu’il confirme la présence de l’extension." }, - "challenge": { - "message": "Prévenez votre surveillant afin qu'il puisse constater votre problème." - } + "refresh": "Rafraîchir la page", + "waiting-information": "En attente du surveillant..." }, "parts": { "answer-input": "Votre réponse", @@ -977,24 +971,26 @@ "aria-label": "Afficher l'indication sur l'épreuve.", "close": "J'ai compris", "focused": { - "title": "Mode Focus", - "content": "''Essayez de rester sur cette page pour répondre !'
' Cette question ne nécessite ni internet, ni application." + "content": "''Essayez de rester sur cette page pour répondre !'
' Cette question ne nécessite ni internet, ni application.", + "title": "Mode Focus" }, "other": { - "title": "Mode Libre", - "content": "Vous êtes libre d’utiliser internet ou des applications pour répondre à cette question." + "content": "Vous êtes libre d’utiliser internet ou des applications pour répondre à cette question.", + "title": "Mode Libre" } } }, "timed": { "cannot-answer": "Le temps imparti est écoulé. Votre réponse ne sera pas validée." + }, + "title": { + "default": "Mode libre - Question {stepNumber} sur {totalChallengeNumber}", + "focused": "Mode focus - Question {stepNumber} sur {totalChallengeNumber}", + "focused-out": "Échoué - Mode focus - Question {stepNumber} sur {totalChallengeNumber}", + "timed-out": "Temps écoulé - Question {stepNumber} sur {totalChallengeNumber}" } }, "checkpoint": { - "title": { - "assessment-progress": "Avancement", - "end-of-assessment": "Fin de votre évaluation" - }, "actions": { "next-page": { "continue": "Continuer", @@ -1011,6 +1007,10 @@ "completion-percentage": { "caption": "avancement dans le parcours", "label": "'

'Vous avez effectué '

'{completionPercentage}%'

' de votre parcours.'

'" + }, + "title": { + "assessment-progress": "Avancement", + "end-of-assessment": "Fin de votre évaluation" } }, "comparison-window": { @@ -1074,7 +1074,6 @@ "upcoming-tutorials": "Bientôt ici des tutoriels pour vous aider à réussir ce type d'épreuves." }, "competence-details": { - "title": "Compétence", "actions": { "continue": { "extra-information": "Reprendre la compétence {competenceName}", @@ -1092,9 +1091,9 @@ "description": "Remise à zéro disponible dans { daysBeforeReset, plural, =0 {0 jour.} =1 {1 jour.} other {# jours.} }", "label": "Remettre à zéro", "modal": { - "title": "Remise à zéro de la compétence", "important-message": "Vos { earnedPix } Pix vont être supprimés de la compétence : { scoreCardName }.", "important-message-above-level-one": "Votre niveau { level } et vos { earnedPix } Pix vont être supprimés de la compétence : { scoreCardName }.", + "title": "Remise à zéro de la compétence", "warning": { "certification": "si vous souhaitez faire certifier votre profil et vos différents résultats, cela pourrait altérer votre certification.", "header": "Attention : ", @@ -1109,13 +1108,13 @@ }, "for-competence": "la compétence {competence}", "next-level-info": "{ remainingPixToNextLevel } pix avant le niveau { level }", + "title": "Compétence", "tutorials": { - "title": "Cultivez vos compétences", - "description": "Voici une sélection de tutos qui pourront vous aider à gagner des Pix." + "description": "Voici une sélection de tutos qui pourront vous aider à gagner des Pix.", + "title": "Cultivez vos compétences" } }, "competence-result": { - "title": "Résultats de votre compétence", "header": { "congratulations": "Félicitations !", "not-bad": "Pas mal, mais pas max !", @@ -1124,7 +1123,8 @@ "too-bad-subtitle": "Manifestement, ce n’est pas votre jour mais vous ferez mieux la prochaine fois.", "you-have-earned": "Vous avez", "you-have-reached-level": "Vous avez atteint" - } + }, + "title": "Résultats de votre compétence" }, "course": { "errors": { @@ -1132,25 +1132,24 @@ } }, "dashboard": { - "title": "Accueil", "campaigns": { - "title": "Parcours", "resume": { "action": "Continuer", "text": "

N'oubliez pas de finaliser votre envoi de profil !

" }, "subtitle": "Continuez vos parcours de test en cours ou envoyez vos résultats", - "tests-link": "Tous mes parcours" + "tests-link": "Tous mes parcours", + "title": "Parcours" }, "empty-dashboard": { "link-to-competences": "Voir mes compétences", "message": "

Bravo vous avez terminé les compétences recommandées !

Pour aller plus loin continuez à vous entraîner en retentant des compétences.

" }, "improvable-competences": { - "title": "Retenter une compétence", "extra-information": "Accéder à toutes les compétences à retenter", "profile-link": "Toutes les compétences", - "subtitle": "Prêt à faire passer votre compétence au niveau supérieur ?" + "subtitle": "Prêt à faire passer votre compétence au niveau supérieur ?", + "title": "Retenter une compétence" }, "presentation": { "link": { @@ -1160,18 +1159,19 @@ "message": "

Bonjour { firstname }, découvrez votre tableau de bord.

Accédez rapidement et facilement à vos parcours et vos tests de compétence déjà commencés.
Retrouvez l’évolution de votre score Pix et vérifiez si votre profil est prêt pour la certification Pix.

" }, "recommended-competences": { - "title": "Compétences recommandées", "extra-information": "Accéder à toutes les compétences recommandées", "profile-link": "Toutes les compétences", - "subtitle": "Explorez les compétences recommandées pour vous." + "subtitle": "Explorez les compétences recommandées pour vous.", + "title": "Compétences recommandées" }, "score": { "profile-link": "Voir mes compétences" }, "started-competences": { - "title": "Reprendre une compétence", - "subtitle": "Continuez vos tests de compétences, retrouvez les plus récents ici." - } + "subtitle": "Continuez vos tests de compétences, retrouvez les plus récents ici.", + "title": "Reprendre une compétence" + }, + "title": "Accueil" }, "error": { "content-text": "'

'Nous vous invitons à recharger cette page ou revenir à la page d’accueil.'

'Vous pouvez aussi nous contacter via ''le formulaire du centre d'aide'' en nous précisant le code d’erreur ci-dessous dans la description.'

'Nous vous prions de nous excuser pour la gêne occasionnée.'

'L’équipe Pix.'

'", @@ -1180,18 +1180,17 @@ "evaluation-results": { "quit-results": { "modal": { - "title": "Oups, vous n’avez pas encore envoyé vos résultats !", + "actions": { + "cancel-to-share": "Rester pour envoyer", + "quit-without-sharing": "Quitter sans envoyer" + }, "content-information": "Envoyer vos résultats à l’organisateur du parcours est essentiel pour votre accompagnement. Restez sur cette page et cliquez sur ‘Envoyer mes résultats’ pour les transmettre.", "content-instruction": "Voulez-vous vraiment quitter sans les envoyer ?", - "actions": { - "quit-without-sharing": "Quitter sans envoyer", - "cancel-to-share": "Rester pour envoyer" - } + "title": "Oups, vous n’avez pas encore envoyé vos résultats !" } } }, "fill-in-campaign-code": { - "title": "J'ai un code", "description": "Ce code est composé de 9 chiffres et/ou lettres. Il est transmis par votre établissement/organisation et permet de démarrer un parcours ou d’envoyer votre profil.", "errors": { "forbidden": "Oups ! nous ne parvenons pas à vous trouver. Vérifiez vos informations afin de continuer ou prévenez l’organisateur.", @@ -1204,21 +1203,21 @@ "first-title-not-connected": "Saisissez votre code", "label": "Saisir votre code pour commencer.", "mediacentre-start-campaign-modal": { - "title": "Accès au parcours par Mediacentre", "actions": { "continue": "Continuer", "quit": "Quitter" }, "message": "Pour accéder au parcours :", "message-footer": "Connecte toi à Pix en passant par ton Mediacentre", - "organised-by": "proposé par " + "organised-by": "proposé par ", + "title": "Accès au parcours par Mediacentre" }, "start": "Accéder au parcours", + "title": "J'ai un code", "warning-message": "Vous n'êtes pas { firstName } { lastName } ?", "warning-message-logout": "Se déconnecter" }, "fill-in-certificate-verification-code": { - "title": "Vérifier un certificat Pix", "description": "La certification Pix atteste d’un niveau de maîtrise des compétences numériques : saisissez ci-après le \"code de vérification\" du certificat Pix à vérifier.", "errors": { "missing-code": "Merci de renseigner le code de vérification.", @@ -1228,10 +1227,10 @@ }, "first-title": "Vérifier un certificat Pix", "label": "Code de vérification (P-XXXXXXXX)", + "title": "Vérifier un certificat Pix", "verify": "Vérifier le certificat" }, "fill-in-participant-external-id": { - "title": "Saisir mon identifiant", "announcement": "L'organisateur a besoin de l'information ci-dessous pour pouvoir vous accompagner :", "buttons": { "cancel": "Annuler", @@ -1241,18 +1240,18 @@ "max-length-id-pix-label": "Votre { idPixLabel } ne doit pas dépasser les 255 caractères.", "missing-id-pix-label": "Merci de renseigner votre { idPixLabel }." }, - "first-title": "Avant de commencer" + "first-title": "Avant de commencer", + "title": "Saisir mon identifiant" }, "focused-certification-challenge-instructions": { - "title": "Mode focus", "action": "Je suis prêt", - "description": "Pour la ou les prochaines questions, vous ne serez pas autorisé à sortir de la page." + "description": "Pour la ou les prochaines questions, vous ne serez pas autorisé à sortir de la page.", + "title": "Mode focus" }, "inscription": { "choose-language-aria-label": "Sélectionnez une langue" }, "join": { - "title": "Rejoindre", "button": "C'est parti !", "fields": { "birthdate": { @@ -1290,7 +1289,6 @@ "subtitle": "Remplissez les informations manquantes" }, "sup": { - "title": "Déclarez votre compte Pix auprès de {organizationName}.", "error": "Veuillez vérifier les informations saisies, ou si vous avez déjà un compte Pix, connectez-vous avec celui-ci.", "fields": { "student-number": { @@ -1300,21 +1298,21 @@ "not-existing": "Je n'ai pas de numéro étudiant" } }, - "message": "Saisissez les informations telles qu’elles figurent sur votre carte d’étudiant pour accéder au test et envoyer les résultats. Pix s’en rappellera la prochaine fois." - } + "message": "Saisissez les informations telles qu’elles figurent sur votre carte d’étudiant pour accéder au test et envoyer les résultats. Pix s’en rappellera la prochaine fois.", + "title": "Déclarez votre compte Pix auprès de {organizationName}." + }, + "title": "Rejoindre" }, "learning-more": { - "title": "Pour en apprendre davantage", - "info": "Ces liens vers les tutos ont été proposés par des utilisateurs de Pix." + "info": "Ces liens vers les tutos ont été proposés par des utilisateurs de Pix.", + "title": "Pour en apprendre davantage" }, "levelup-notif": { "obtained-level": "Niveau { level } gagné !" }, "login-or-register": { - "title": "Se connecter à Pix", "invitation": "{ organizationName } vous invite à rejoindre Pix", "login-form": { - "title": "J’ai déjà un compte Pix", "button": "Se connecter", "error": "L'adresse e-mail ou l'identifiant et/ou le mot de passe saisis sont incorrects", "fields": { @@ -1331,10 +1329,10 @@ "other-identity": "Un identifiant : Contactez votre enseignant pour le réinitialiser", "reset-link": "Cliquez ici pour le réinitialiser" }, + "title": "J’ai déjà un compte Pix", "unexpected-user-account-error": "L'adresse e-mail ou l'identifiant est incorrect. Pour continuer, vous devez vous connecter à votre compte qui est sous la forme : " }, "register-form": { - "title": "Je m’inscris sur Pix", "button": "S'inscrire", "button-form": "Je m'inscris", "fields": { @@ -1388,11 +1386,12 @@ }, "rgpd-legal-notice": "Pour savoir comment tes données sont traitées et quels sont tes droits, tu peux lire les", "rgpd-legal-notice-link": "Mentions d'information.", - "rgpd-legal-notice-url": "https://pix.fr/politique-protection-donnees-personnelles-app-eleves" - } + "rgpd-legal-notice-url": "https://pix.fr/politique-protection-donnees-personnelles-app-eleves", + "title": "Je m’inscris sur Pix" + }, + "title": "Se connecter à Pix" }, "login-or-register-oidc": { - "title": "Créez votre compte Pix", "error": { "account-conflict": "Ce compte est déjà associé à cet organisme. Veuillez vous connecter avec un autre compte ou contacter le support.", "data-sharing-refused": "Nous vous informons que la transmission de vos données, précisées à la page précédente, est indispensable pour pouvoir accéder au service et l'utiliser.", @@ -1402,21 +1401,22 @@ "login-unauthorized-error": "L'adresse e-mail et/ou le mot de passe saisis sont incorrects." }, "login-form": { - "title": "J’ai déjà un compte Pix", "button": "Je me connecte", "description": "Connectez-vous pour lier votre compte existant et récupérer vos compétences déjà évaluées", "email": "Adresse e-mail", - "password": "Mot de passe" + "password": "Mot de passe", + "title": "J’ai déjà un compte Pix" }, "register-form": { - "title": "Je n’ai pas de compte Pix", "button": "Je crée mon compte", "description": "Un compte va être créé à partir des éléments transmis par l'organisme", "information": { "family-name": "Nom : {familyName}", "given-name": "Prénom : {givenName}" - } - } + }, + "title": "Je n’ai pas de compte Pix" + }, + "title": "Créez votre compte Pix" }, "modulix": { "beta-banner": "Ce module est en version bêta. Vous pourrez faire vos retours à la fin de ce module pour nous permettre de l’améliorer.", @@ -1440,15 +1440,15 @@ } }, "flashcards": { - "start": "Commencer", - "seeAnswer": "Voir la réponse", - "seeAgain": "Revoir la question", - "nextCard": "Suivant", "answers": { - "notAtAll": "Pas du tout", "almost": "Presque", + "notAtAll": "Pas du tout", "yes": "Oui !" - } + }, + "nextCard": "Suivant", + "seeAgain": "Revoir la question", + "seeAnswer": "Voir la réponse", + "start": "Commencer" }, "grain": { "continue": "Continuer", @@ -1471,10 +1471,10 @@ "level": "Niveau", "objectives": "Objectifs", "smallScreenModal": { - "title": "Vous semblez utiliser un petit écran", "cancel": "Revenir aux détails", "description": "Certaines activités de ce module peuvent être difficiles à réaliser sur un petit écran. Pour une expérience optimale, nous vous recommandons d'utiliser un ordinateur.", - "startModule": "Commencer" + "startModule": "Commencer", + "title": "Vous semblez utiliser un petit écran" }, "startModule": "Commencer le module" }, @@ -1488,8 +1488,8 @@ "label": "Télécharger le fichier au format {format}" }, "flashcards": { - "direction": "Cherchez la réponse puis tournez la carte", "answerDirection": "Vous aviez la réponse ?", + "direction": "Cherchez la réponse puis tournez la carte", "position": "Carte {currentCardPosition}/{totalCards}" }, "grain": { @@ -1519,10 +1519,10 @@ "direction": "Remplissez {count, plural, =1 {le champ vide} other {les champs vides}}." }, "recap": { - "title": "Bravo ! Module terminé", "backToModuleDetails": "Revenir aux détails du module", "goToForm": "Répondre au questionnaire", - "subtitle": "Vous avez atteint les objectifs suivants :" + "subtitle": "Vous avez atteint les objectifs suivants :", + "title": "Bravo ! Module terminé" }, "stepper": { "step": { @@ -1536,11 +1536,10 @@ } }, "not-connected": { - "title": "Déconnecté", - "message": "Vous êtes bien déconnecté(e).'
'Merci, à bientôt." + "message": "Vous êtes bien déconnecté(e).'
'Merci, à bientôt.", + "title": "Déconnecté" }, "oidc-reconciliation": { - "title": "Attention !", "authentication-method-to-add": "Connexion ajoutée :", "confirm": "Continuer", "current-authentication-methods": "Mes méthodes de connexion actuelles :", @@ -1551,10 +1550,10 @@ "return": "Retour", "sub-title": "Un nouveau moyen de connexion est sur le point d'être ajouté à votre compte Pix", "switch-account": "Changer de compte", + "title": "Attention !", "username": "Identifiant" }, "password-reset-demand": { - "title": "Mot de passe oublié ?", "actions": { "back-home": "Retour à l'accueil", "back-sign-in": "Retour à la page de connexion", @@ -1574,10 +1573,10 @@ "help": "Si vous ne recevez pas cet e-mail, vérifiez vos courriers indésirables.", "instructions": "Un e-mail contenant la démarche à suivre afin de réinitialiser votre mot de passe\n vous a été envoyé à l’adresse e-mail {email}.", "subtitle": "Demande de réinitialisation de mot de passe" - } + }, + "title": "Mot de passe oublié ?" }, "profile": { - "title": "Compétences", "accessibility": { "title": "Votre profil Pix", "user-score": "Votre nombre de Pix", @@ -1607,15 +1606,15 @@ "reminder-send-campaign": "N'oubliez pas de finaliser votre envoi !", "reminder-send-campaign-with-title": "Parcours \"{title}\" terminé. N'oubliez pas de finaliser votre envoi !" }, + "title": "Compétences", "total-score-helper": { - "title": "Pourquoi 1024 pix ?", "explanation": "'

'C’est le nombre maximum de pix qu’on pourra atteindre lorsque les 8 niveaux du référentiel Pix seront disponibles.'

'Aujourd’hui, ''le maximum est de {maxReachablePixScore} pix'', correspondant au niveau {maxReachableLevel}.'

'", "icon": "Information sur les pix", - "label": "Ouvrir l'infobulle" + "label": "Ouvrir l'infobulle", + "title": "Pourquoi 1024 pix ?" } }, "profile-already-shared": { - "title": "Profil déjà envoyé", "actions": { "continue": "Continuez votre expérience Pix" }, @@ -1624,10 +1623,10 @@ "retry": { "button": "Renvoyer mon profil", "message": "{organization} vous invite à renvoyer votre profil pour mesurer votre progression." - } + }, + "title": "Profil déjà envoyé" }, "reset-password": { - "title": "Changer mon mot de passe", "actions": { "sign-in": "Connectez-vous", "submit": "Envoyer" @@ -1643,7 +1642,8 @@ } }, "instruction": "Saisissez votre nouveau mot de passe", - "succeed": "Votre mot de passe a été modifié avec succès." + "succeed": "Votre mot de passe a été modifié avec succès.", + "title": "Changer mon mot de passe" }, "result-item": { "aband": "Pas de réponse", @@ -1657,7 +1657,6 @@ "timedout": "Temps dépassé" }, "send-profile": { - "title": "Envoyer mon profil", "disabled-share": "Ce parcours a été désactivé par l'organisateur. L'envoi des résultats n'est plus possible.", "errors": { "archived": "L’envoi de votre profil n’est plus possible car l’organisateur a archivé la collecte de profils." @@ -1669,14 +1668,14 @@ "send": "J'envoie mon profil", "shared": "Merci, votre profil a bien été envoyé !" }, - "instructions": "Vous allez transmettre le score et les niveaux de compétence présents sur votre profil Pix. '
' Toute évolution de votre profil après cet envoi ne sera pas transmise. '
' Pensez à le vérifier avant de l'envoyer !" + "instructions": "Vous allez transmettre le score et les niveaux de compétence présents sur votre profil Pix. '
' Toute évolution de votre profil après cet envoi ne sera pas transmise. '
' Pensez à le vérifier avant de l'envoyer !", + "title": "Envoyer mon profil" }, "shared-certification": { - "title": "Partage de certificat", - "back-link": "Retour à la saisie du code de vérification" + "back-link": "Retour à la saisie du code de vérification", + "title": "Partage de certificat" }, "sign-in": { - "title": "Connexion", "actions": { "submit": "Je me connecte" }, @@ -1696,28 +1695,28 @@ "first-title": "Connectez-vous", "forgotten-password": "Mot de passe oublié ?", "fwb": { - "title": "Se connecter via la FWB", "link": { "img": "FWB connect" - } + }, + "title": "Se connecter via la FWB" }, "or": "OU", "pole-emploi": { - "title": "Se connecter avec pôle emploi", "link": { "img": "pôle Emploi connect" - } + }, + "title": "Se connecter avec pôle emploi" }, "subtitle": { "link": "Créez un compte", "text": "Vous n'avez pas encore de compte Pix ?" - } + }, + "title": "Connexion" }, "sign-up": { - "title": "Inscription", "actions": { - "submit": "Je m'inscris", - "login": "Se connecter sur Pix" + "login": "Se connecter sur Pix", + "submit": "Je m'inscris" }, "errors": { "invalid-locale-format": "Votre locale \"{invalidLocale}\" n'est pas dans le bon format.", @@ -1748,22 +1747,22 @@ "instructions": "Les champs marqués de ''*'' sont obligatoires", "subtitle": { "link": "connectez-vous à votre compte" - } + }, + "title": "Inscription" }, "sitemap": { - "title": "Plan du site", "accessibility": { - "title": "Accessibilité", - "help": "Aide pour répondre à vos questions sur l'accessibilité sur Pix" + "help": "Aide pour répondre à vos questions sur l'accessibilité sur Pix", + "title": "Accessibilité" }, "cgu": { "policy": "Politique de protection des données", "subcontractors": "Liste des sous-traitants" }, - "resources": "Ressources" + "resources": "Ressources", + "title": "Plan du site" }, "skill-review": { - "title": "Résultat", "abstract": "Vous maîtrisez ''{rate, number, ::percent}'
'des compétences testées.", "abstract-title": "Votre résultat pour ce parcours", "actions": { @@ -1782,14 +1781,14 @@ }, "badges-title": "Vos résultats thématiques", "details": { - "title": "Vos résultats par compétence", "caption": "Détails de vos résultats sous forme de pourcentage en fonction des compétences", "flash-pix-score": "{score, number, ::.} Pix", "header-result": "Résultats", "header-skill": "Compétences testées", "percentage": "{rate, number, ::percent}", "progress-bar-label": "Pourcentage de réussite de la compétence", - "result": "Résultat global" + "result": "Résultat global", + "title": "Vos résultats par compétence" }, "disabled-share": "Ce parcours a été désactivé par l'organisateur.'
'L'envoi des résultats n'est plus possible.", "error": "Oups, une erreur est survenue !", @@ -1798,18 +1797,38 @@ "nonDefinitive": "(calcul non définitif)", "pixScore": "Vous avez obtenu {score, number, ::.} Pix" }, + "hero": { + "acquired-badges-title": "Récompenses obtenues", + "bravo": "Bravo {name} !", + "explanations": { + "improve": "Si vous voulez améliorer votre score, vous pouvez retenter certaines questions.", + "send-results": "Envoyez vos résultats à l’organisateur du parcours et continuez à progresser avec les formations recommandées.", + "trainings": "Pour progresser, découvrez nos recommandations de formations et trouvez celles qui vous conviennent le mieux." + }, + "mastery-rate": "de réussite aux questions", + "retry": { + "actions": { + "reset": "Remettre à zéro et tout retenter", + "retry": "Repasser mon parcours" + }, + "description": "Votre organisateur vous invite à repasser ce parcours.", + "title": "Améliorez vos résultats" + }, + "see-trainings": "Voir les formations", + "shared-message": "Merci d'avoir envoyé vos résultats." + }, "improve": { - "title": "Envie d'améliorer vos résultats ?", - "description": "Vous pouvez retenter certaines questions" + "description": "Vous pouvez retenter certaines questions", + "title": "Envie d'améliorer vos résultats ?" }, "information": "Si vous avez déjà effectué des parcours sur Pix, les questions auxquelles vous aviez répondu ne vous ont pas été posées de nouveau. En revanche, le résultat affiché ici tient compte de l’ensemble de vos réponses.", "net-promoter-score": { - "title": "Votre avis compte !", "link": { "href": "https://pix.fr", "label": "Je donne mon avis" }, - "text": "Prenez quelques minutes pour nous dire ce que vous avez pensé de ce test et nous aider à l'améliorer." + "text": "Prenez quelques minutes pour nous dire ce que vous avez pensé de ce test et nous aider à l'améliorer.", + "title": "Votre avis compte !" }, "not-finished": "Vous ne pouvez pas encore envoyer vos résultats, nous avons encore quelques questions à vous poser.", "organization-message": "Message de votre organisation", @@ -1831,66 +1850,47 @@ }, "send-title": "Envoyez vos résultats", "stage": { - "title": "Détails des compétences", "caption": "Détails de vos résultats sous forme de pourcentage et d'étoiles en fonction des compétences", "masteryPercentage": "{rate, number, ::percent} de réussite", - "starsAcquired": "{acquired, plural, =0 {aucune étoile acquise} =1 {# étoile acquise} other {# étoiles acquises}} sur {total}" - }, - "hero": { - "acquired-badges-title": "Récompenses obtenues", - "bravo": "Bravo {name} !", - "explanations": { - "improve": "Si vous voulez améliorer votre score, vous pouvez retenter certaines questions.", - "send-results": "Envoyez vos résultats à l’organisateur du parcours et continuez à progresser avec les formations recommandées.", - "trainings": "Pour progresser, découvrez nos recommandations de formations et trouvez celles qui vous conviennent le mieux." - }, - "mastery-rate": "de réussite aux questions", - "retry": { - "title": "Améliorez vos résultats", - "description": "Votre organisateur vous invite à repasser ce parcours.", - "actions": { - "retry": "Repasser mon parcours", - "reset": "Remettre à zéro et tout retenter" - } - }, - "see-trainings": "Voir les formations", - "shared-message": "Merci d'avoir envoyé vos résultats." + "starsAcquired": "{acquired, plural, =0 {aucune étoile acquise} =1 {# étoile acquise} other {# étoiles acquises}} sur {total}", + "title": "Détails des compétences" }, "tabs": { "aria-label": "3 onglets détaillant vos résultats", "results-details": { - "title": "Détails des résultats", "description": "Découvrez en détail vos compétences, organisées par domaines spécifiques, pour mieux comprendre vos forces et axes d'amélioration. Identifiez vos points forts et les domaines où concentrer vos efforts pour progresser davantage.", - "tab-label": "Détails" + "tab-label": "Détails", + "title": "Détails des résultats" }, "rewards": { - "title": "Récompenses et attentes de l’organisateur", "description": "Cette section met en lumière les récompenses reçues ainsi que les attentes de l’organisateur du parcours. Découvrez comment vos performances ont été évaluées et identifiez les axes d'amélioration pour votre développement de compétences.", - "tab-label": "Récompenses" + "tab-label": "Récompenses", + "title": "Récompenses et attentes de l’organisateur" }, "trainings": { - "title": "Vous souhaitez en apprendre plus ?", "description": "Obtenez des recommandations de formations personnalisées pour continuer à progresser et nourrir votre curiosité pour vous aider à réaliser votre plein potentiel.", - "tab-label": "Formations", "modal": { "content": "Envoyez vos résultats pour permettre à l’organisateur du parcours de vous accompagner.'
'Après avoir partagé, vous bénéficierez d'un accès à ces formations !", "share-error": "Il y a eu une erreur lors de l'envoi de vos résultats. Veuillez réessayer." - } + }, + "tab-label": "Formations", + "title": "Vous souhaitez en apprendre plus ?" } }, + "title": "Résultat", "trainings": { - "title": "Vous souhaitez en apprendre plus ?", - "description": "Découvrez des formations recommandées pour vous, en fonction de vos résultats, afin de progresser !" + "description": "Découvrez des formations recommandées pour vous, en fonction de vos résultats, afin de progresser !", + "title": "Vous souhaitez en apprendre plus ?" } }, "terms-of-service": { - "title": "Conditions d'utilisation", "cgu": "J'accepte les ''conditions d'utilisation de Pix''", "form": { "button": "Je continue", "error-message": "Vous devez accepter les conditions d’utilisation de Pix." }, - "message": "Nous avons mis à jour nos conditions d'utilisation. Veuillez les accepter afin de pouvoir continuer votre expérience sur Pix." + "message": "Nous avons mis à jour nos conditions d'utilisation. Veuillez les accepter afin de pouvoir continuer votre expérience sur Pix.", + "title": "Conditions d'utilisation" }, "timed-challenge-instructions": { "action": "Commencer l'épreuve", @@ -1914,43 +1914,42 @@ } }, "tutorial": { - "title": "Didacticiel de la campagne", "dot-action-title": "Afficher l'étape {stepNumber}/{stepsCount}", "dots-nav-label": "Étapes du didacticiel", "next": "Suivant", "next-title": "Afficher l'étape suivante", "pages": { "page0": { - "title": "Vous pouvez rechercher sur internet ...", - "explanation": "Si vous ignorez une réponse, \nelle se trouve sûrement sur internet." + "explanation": "Si vous ignorez une réponse, \nelle se trouve sûrement sur internet.", + "title": "Vous pouvez rechercher sur internet ..." }, "page1": { - "title": "... sauf pour certaines questions", - "explanation": "Si cette image est affichée, utilisez uniquement vos connaissances !\n Vous ne devez utiliser ni internet ni vos logiciels." + "explanation": "Si cette image est affichée, utilisez uniquement vos connaissances !\n Vous ne devez utiliser ni internet ni vos logiciels.", + "title": "... sauf pour certaines questions" }, "page2": { - "title": "Pas de limite de temps !", - "explanation": "Prenez le temps nécessaire pour terminer votre parcours. \nSi une question est chronométrée, cela vous sera indiqué." + "explanation": "Prenez le temps nécessaire pour terminer votre parcours. \nSi une question est chronométrée, cela vous sera indiqué.", + "title": "Pas de limite de temps !" }, "page3": { - "title": "Des tutos pour apprendre", - "explanation": "Accédez à des tutos pour apprendre davantage \nsur chaque question et progresser." + "explanation": "Accédez à des tutos pour apprendre davantage \nsur chaque question et progresser.", + "title": "Des tutos pour apprendre" }, "page4": { - "title": "Un niveau de difficulté adapté", - "explanation": "En fonction de vos réponses,\nPix adapte la difficulté des questions." + "explanation": "En fonction de vos réponses,\nPix adapte la difficulté des questions.", + "title": "Un niveau de difficulté adapté" } }, "pass": "Ignorer", "pass-title": "Ignorer le didacticiel et démarrer mon parcours", - "start": "Démarrer mon parcours" + "start": "Démarrer mon parcours", + "title": "Didacticiel de la campagne" }, "tutorial-panel": { - "title": "Pour réussir la prochaine fois", - "info": "Ces liens vers les tutos ont été proposés par des utilisateurs de Pix." + "info": "Ces liens vers les tutos ont été proposés par des utilisateurs de Pix.", + "title": "Pour réussir la prochaine fois" }, "update-expired-password": { - "title": "Changer mon mot de passe", "button": "Réinitialiser", "fields": { "error": "Votre mot de passe doit contenir 8 caractères au minimum et comporter au moins une majuscule, une minuscule et un chiffre.", @@ -1960,12 +1959,11 @@ "first-title": "Réinitialiser le mot de passe", "go-to-login": "Je me connecte", "subtitle": "Choisissez un nouveau mot de passe pour continuer", + "title": "Changer mon mot de passe", "validation": "Votre mot de passe a été mis à jour." }, "user-account": { - "title": "Mon compte", "account-update-email": { - "title": "Modification de votre adresse e-mail", "email-information": "Cette adresse e-mail doit être valide en cas de mot de passe oublié. '
' Elle sera votre nouvelle adresse de connexion.", "fields": { "errors": { @@ -1987,10 +1985,10 @@ } }, "password-information": "Saisissez votre mot de passe pour confirmer", - "save-button": "Confirmer" + "save-button": "Confirmer", + "title": "Modification de votre adresse e-mail" }, "account-update-email-with-validation": { - "title": "Modification de votre adresse e-mail", "fields": { "errors": { "empty-password": "Votre mot de passe ne peut pas être vide.", @@ -2006,7 +2004,8 @@ "security-information": "La sécurité de vos informations personnelles est essentielle. Nous vérifions donc que vous êtes bien à l'origine de cette demande. Saisissez votre mot de passe pour recevoir un code de vérification." } }, - "save-button": "Recevoir un code de vérification" + "save-button": "Recevoir un code de vérification", + "title": "Modification de votre adresse e-mail" }, "connexion-methods": { "authentication-methods": { @@ -2021,7 +2020,6 @@ }, "email-confirmed": "Adresse e-mail vérifiée.", "email-verification": { - "title": "Vérification de votre adresse e-mail", "code-explanation-of-use": "Pour se déplacer de champ en champ, utilisez soit la tabulation, soit les flèches gauche et droite du clavier. Pour remplir un champ, saisissez des chiffres de 1 à 9 ou bien utilisez les flèches haut et bas du clavier.", "code-label": "Champ", "code-legend": "Saisir le code de vérification envoyé par email", @@ -2035,6 +2033,7 @@ "unknown-error": "Une erreur est survenue. Veuillez recommencer ou contacter le support." }, "send-back-the-code": "me renvoyer le code", + "title": "Vérification de votre adresse e-mail", "update-successful": "Votre adresse e-mail a été changée !" }, "language": { @@ -2046,25 +2045,25 @@ "first-name": "Prénom", "last-name": "Nom", "menu-link-title": "Mes informations personnelles" - } + }, + "title": "Mon compte" }, "user-tests": { "title": "Mes parcours" }, "user-trainings": { - "title": "Mes formations", - "description": "Continuez à progresser grâce aux formations recommandées à l’issue de vos parcours d’évaluation." + "description": "Continuez à progresser grâce aux formations recommandées à l’issue de vos parcours d’évaluation.", + "title": "Mes formations" }, "user-tutorials": { - "title": "Mes tutos", "description": "Progresser grâce aux tutos suggérés par la communauté des utilisateurs de Pix.", "empty-list-info": { - "title": "Vous n'avez encore rien enregistré", "description": { "part1": "Au fil de vos tests, des tutos vous sont recommandés : cliquez sur l'icône marque page", "part2": "pour enregistrer ceux que vous souhaitez retrouver ici !" }, - "image-link": "images/illustrations/user-tutorials/illustration-fr.svg" + "image-link": "images/illustrations/user-tutorials/illustration-fr.svg", + "title": "Vous n'avez encore rien enregistré" }, "filter": "Filtrer", "label": "tutoriels", @@ -2088,20 +2087,21 @@ }, "recommended": "Recommandés", "recommended-empty": { - "title": "{firstName}, retrouvez ici vos tutos favoris", "description": "Afin de vous recommander des tutos adaptés à votre niveau, vous devez commencer un test de compétence.", - "link": "Je commence" + "link": "Je commence", + "title": "{firstName}, retrouvez ici vos tutos favoris" }, "saved": "Enregistrés", "saved-empty": { - "title": "Vous n'avez pas encore de tutos enregistrés", - "description": "Vouz devez enregistrer un tuto recommandé pour qu'il s'affiche ici." + "description": "Vouz devez enregistrer un tuto recommandé pour qu'il s'affiche ici.", + "title": "Vous n'avez pas encore de tutos enregistrés" }, "sidebar": { "reset": "Réinitialiser", "reset-aria-label": "Réinitialiser et désélectionner tous les filtres", "see-results": "Voir les résultats" - } + }, + "title": "Mes tutos" } } } From 088f8e54a06ee8ce62dcc1115c87955ce3076fea Mon Sep 17 00:00:00 2001 From: LEGO Technix <109212476+lego-technix@users.noreply.github.com> Date: Fri, 18 Oct 2024 16:39:15 +0000 Subject: [PATCH 4/5] style(api): add back translations linting cf. https://github.com/godaddy/eslint-plugin-i18n-json/issues/62 --- api/eslint.config.cjs | 16 +- api/package-lock.json | 388 +++++++++++++++++++++++++++++++++++++++++- api/package.json | 3 + 3 files changed, 402 insertions(+), 5 deletions(-) diff --git a/api/eslint.config.cjs b/api/eslint.config.cjs index bb47f8ac349..a5b8c2dee1b 100644 --- a/api/eslint.config.cjs +++ b/api/eslint.config.cjs @@ -1,5 +1,4 @@ const { fixupPluginRules } = require('@eslint/compat'); - const babel = require('@babel/eslint-parser'); const eslintConfig = require('@1024pix/eslint-plugin/config'); const prettier = require('eslint-plugin-prettier/recommended'); @@ -8,8 +7,10 @@ const n = require('eslint-plugin-n').configs['flat/recommended']; const _import = require('eslint-plugin-import-x'); const knex = require('eslint-plugin-knex'); const unicorn = require('eslint-plugin-unicorn'); - const mocha = require('eslint-plugin-mocha'); +const i18nJsonPlugin = require('eslint-plugin-i18n-json'); + +const nonPhraseGeneratedFiles = ['translations/en.json', 'translations/fr.json']; module.exports = [ ...eslintConfig, @@ -158,4 +159,15 @@ module.exports = [ ], }, }, + { + files: nonPhraseGeneratedFiles, + plugins: { 'i18n-json': i18nJsonPlugin }, + processor: { + meta: { name: '.json' }, + ...i18nJsonPlugin.processors['.json'], + }, + rules: { + ...i18nJsonPlugin.configs.recommended.rules, + }, + }, ]; diff --git a/api/package-lock.json b/api/package-lock.json index 252838fb20d..234b6c45e50 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -91,6 +91,7 @@ "eslint": "^8.46.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-chai-expect": "^3.0.0", + "eslint-plugin-i18n-json": "^4.0.0", "eslint-plugin-import-x": "^3.1.0", "eslint-plugin-knex": "v0.2.2", "eslint-plugin-mocha": "^10.0.5", @@ -1729,6 +1730,61 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@formatjs/ecma402-abstract": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.0.tgz", + "integrity": "sha512-IpM+ev1E4QLtstniOE29W1rqH9eTdx5hQdNL8pzrflMj/gogfaoONZqL83LUeQScHAvyMbpqP5C9MzNf+fFwhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@formatjs/fast-memoize": "2.2.1", + "@formatjs/intl-localematcher": "0.5.5", + "tslib": "^2.7.0" + } + }, + "node_modules/@formatjs/fast-memoize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.1.tgz", + "integrity": "sha512-XS2RcOSyWxmUB7BUjj3mlPH0exsUzlf6QfhhijgI941WaJhVxXQ6mEWkdUFIdnKi3TuTYxRdelsgv3mjieIGIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.7.0" + } + }, + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.7.10", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.10.tgz", + "integrity": "sha512-wlQfqCZ7PURkUNL2+8VTEFavPovtADU/isSKLFvDbdFmV7QPZIYqFMkhklaDYgMyLSBJa/h2MVQ2aFvoEJhxgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "2.2.0", + "@formatjs/icu-skeleton-parser": "1.8.4", + "tslib": "^2.7.0" + } + }, + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.4.tgz", + "integrity": "sha512-LMQ1+Wk1QSzU4zpd5aSu7+w5oeYhupRwZnMQckLPRYhSjf2/8JWQ882BauY9NyHxs5igpuQIXZDgfkaH3PoATg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "2.2.0", + "tslib": "^2.7.0" + } + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.5.tgz", + "integrity": "sha512-t5tOGMgZ/i5+ALl2/offNqAQq/lfUnKLEw0mXQI4N4bqpedhrSE+fyKLpwnd22sK0dif6AV+ufQcTsKShB9J1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.7.0" + } + }, "node_modules/@getbrevo/brevo": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@getbrevo/brevo/-/brevo-2.2.0.tgz", @@ -2221,6 +2277,21 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/@joi/date": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@joi/date/-/date-2.1.1.tgz", @@ -2795,6 +2866,15 @@ "node": ">=8" } }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/@sinonjs/commons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", @@ -5343,6 +5423,18 @@ "node": ">=0.3.1" } }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -5760,6 +5852,86 @@ "eslint": ">=8" } }, + "node_modules/eslint-plugin-i18n-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-i18n-json/-/eslint-plugin-i18n-json-4.0.0.tgz", + "integrity": "sha512-rglbr9f/UaPN/OeiSLVVFlIh4RrXPTzX5qr4tqOdTj1Ryr8xIhUzriDDuyuPWliektO86c/zy1RldmBIOfDNsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@formatjs/icu-messageformat-parser": "^2.0.18", + "chalk": "^2.3.2", + "indent-string": "^3.2.0", + "jest-diff": "^22.0.3", + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "lodash.isplainobject": "^4.0.6", + "lodash.set": "^4.3.2", + "log-symbols": "^2.2.0", + "parse-json": "^5.2.0", + "plur": "^2.1.2", + "pretty-format": "^22.0.3" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">=4.0.0" + } + }, + "node_modules/eslint-plugin-i18n-json/node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/eslint-plugin-i18n-json/node_modules/indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-i18n-json/node_modules/jest-diff": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-22.4.3.tgz", + "integrity": "sha512-/QqGvCDP5oZOF6PebDuLwrB2BMD8ffJv6TAGAdEVuDx1+uEgrHpSFrfrOiMRx2eJ1hgNjlQrOQEHetVwij90KA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.0.1", + "diff": "^3.2.0", + "jest-get-type": "^22.4.3", + "pretty-format": "^22.4.3" + } + }, + "node_modules/eslint-plugin-i18n-json/node_modules/jest-get-type": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", + "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-i18n-json/node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/eslint-plugin-import-x": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-3.1.0.tgz", @@ -8051,6 +8223,156 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/joi": { "version": "17.13.3", "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", @@ -8700,6 +9022,13 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==", + "dev": true, + "license": "MIT" + }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -10462,6 +10791,29 @@ "semver-compare": "^1.0.0" } }, + "node_modules/plur": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", + "integrity": "sha512-WhcHk576xg9y/iv6RWOuroZgsqvCbJN+XGvAypCJwLAYs2iWDp5LUmvaCdV6JR2O0SMBf8l6p7A94AyLCFVMlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "irregular-plurals": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/plur/node_modules/irregular-plurals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", + "integrity": "sha512-kniTIJmaZYiwa17eTtWIfm0K342seyugl6vuC8DiiyiRAJWAVlLkqGCI0Im0neo0TkXw+pRcKaBPRdcKHnQJ6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/pluralize": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", @@ -10578,6 +10930,27 @@ "node": ">=6.0.0" } }, + "node_modules/pretty-format": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.4.3.tgz", + "integrity": "sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -10745,6 +11118,15 @@ "node": "*" } }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/read-package-json-fast": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", @@ -12446,9 +12828,9 @@ } }, "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", "license": "0BSD" }, "node_modules/tunnel-agent": { diff --git a/api/package.json b/api/package.json index 04a90d42a38..fd9ff9d8734 100644 --- a/api/package.json +++ b/api/package.json @@ -97,6 +97,7 @@ "eslint": "^8.46.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-chai-expect": "^3.0.0", + "eslint-plugin-i18n-json": "^4.0.0", "eslint-plugin-import-x": "^3.1.0", "eslint-plugin-knex": "v0.2.2", "eslint-plugin-mocha": "^10.0.5", @@ -144,6 +145,8 @@ "lint:js": "eslint . --cache --cache-strategy content", "lint:js:fix": "npm run lint:js -- --fix", "lint:js:uncached": "eslint .", + "lint:translations": "eslint --format node_modules/eslint-plugin-i18n-json/formatter.js translations", + "lint:translations:fix": "npm run lint:translations -- --fix", "postdeploy": "DEBUG=knex:* npm run db:migrate", "preinstall": "npx check-engine", "scalingo-postbuild": "node scripts/generate-cron > cron.json", From f55a3eb8692c18b273dc11313d6978ada1db1d64 Mon Sep 17 00:00:00 2001 From: LEGO Technix <109212476+lego-technix@users.noreply.github.com> Date: Fri, 18 Oct 2024 16:40:18 +0000 Subject: [PATCH 5/5] style(api): lint:translations:fix --- api/translations/en.json | 24 ++++++++++++------------ api/translations/fr.json | 22 +++++++++++----------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/api/translations/en.json b/api/translations/en.json index e8ddc5423d2..a7194451939 100644 --- a/api/translations/en.json +++ b/api/translations/en.json @@ -9,17 +9,16 @@ "session": "The certification session" }, "examiner-information": { - "title": "The invigilator(s)", "invigilated-by": "Invigilated by:", - "signature": "Signature(s):" + "signature": "Signature(s):", + "title": "The invigilator(s)" }, "file-name": "attendance-sheet-session-", "header": { - "title": "Attendance sheet", - "page": "Page" + "page": "Page", + "title": "Attendance sheet" }, "table": { - "title": "List of candidates", "birth-name": "Birth name", "date-of-birth": { "example": "(dd/mm/yyyy)", @@ -28,7 +27,8 @@ "division": "Division", "external-id": "External user ID", "first-name": "First name", - "signature": "Signature" + "signature": "Signature", + "title": "List of candidates" } }, "campaign-export": { @@ -83,7 +83,6 @@ } }, "candidate-list-template": { - "title": "Candidates' list", "billing-mode": { "free": "Free", "paid": "Paid", @@ -130,6 +129,7 @@ "prepayment": "Prepayment code", "pricing": "Pricing", "pricing-pix": "Pricing of Pix’s share", + "title": "Candidates' list", "tooltip-line-1": "(Required in particular when purchasing combined credits)", "tooltip-line-2": "It must be comprised of the organisation’s SIRET and of the invoice’s number. Ex: 12345678912345/FACT12345. ", "tooltip-line-3": "If you don’t have an invoice, a prepayment code must be set with Pix.", @@ -145,7 +145,6 @@ }, "certification-center-invitation-email": { "params": { - "title": "Invitation to join the Pix Certif space", "acceptInvitation": "Accept the invitation", "doNotAnswer": "This is an automated email message, please do not reply.", "here": "here", @@ -153,6 +152,7 @@ "needHelp": "Need help, contact us", "oneTimeLink": "This is a one-time use link", "pixCertifPresentation": "The Pix Certif space is a tool dedicated to the organisation of certification sessions.", + "title": "Invitation to join the Pix Certif space", "yourCertificationCenter": "Your certification centre" }, "subject": "Invitation to join Pix Certif" @@ -165,7 +165,6 @@ "max-reachable-level-indication": "* At the date of the successful completion of this certification, the number of acheivable pix was { maxReachableScore }, corresponding to a level { maxReachableLevelOnCertificationDate }." }, "certification-result-email": { - "title": "View the results of the certification session n° {sessionId} !", "params": { "doNotReply": "This is an automatic email, please do not reply.", "download": "Download the results", @@ -177,7 +176,8 @@ "resultsAvailable": "The results of the Pix certifications that you have recommended to your audiences are available.", "subject": "[Pix] Certification session", "viewResultsInProfile": "The candidates can view their result in their Pix profile." - } + }, + "title": "View the results of the certification session n° {sessionId} !" }, "certification-results-csv": { "filenames": { @@ -333,7 +333,6 @@ }, "organization-invitation-email": { "params": { - "title": "You are invited to join Pix Orga", "acceptInvitation": "Accept the invitation", "doNotAnswer": "This is an automated email message, please do not reply.", "here": "here", @@ -342,6 +341,7 @@ "oneTimeLink": "This is a single-use link", "pixPresentation": "Pix is the online service to assess, develop and certify your digital skills.", "subtitle": "With the Pix Orga platform, create and manage testing campaigns and monitor the progress of your participants.", + "title": "You are invited to join Pix Orga", "yourOrganization": "Your organisation" }, "subject": "Invitation to join Pix Orga" @@ -363,7 +363,6 @@ }, "reset-password-demand-email": { "params": { - "title": "Reset your password", "clickOnTheButton": "Click on the button below to choose a new password.", "contactUs": "contact us here", "doNotAnswer": "This is an automated email message, please do not reply. Have questions? We're here to help, ", @@ -371,6 +370,7 @@ "moreOn": "More on", "pixPresentation": "Pix is the online public service to assess, develop and certify your digital skills.", "resetMyPassword": "Reset my password", + "title": "Reset your password", "weCannotSendYourPassword": "Hello, for security reasons, we cannot send your password by email." }, "subject": "Pix password reset request" diff --git a/api/translations/fr.json b/api/translations/fr.json index 540ec15e721..766beb9d76e 100644 --- a/api/translations/fr.json +++ b/api/translations/fr.json @@ -21,17 +21,16 @@ "session": "La session de certification" }, "examiner-information": { - "title": "Le(s) surveillants(s)", "invigilated-by": "Surveillé par :", - "signature": "Signature(s) :" + "signature": "Signature(s) :", + "title": "Le(s) surveillants(s)" }, "file-name": "feuille-emargement-session-", "header": { - "title": "Feuille d'émargement", - "page": "Page" + "page": "Page", + "title": "Feuille d'émargement" }, "table": { - "title": "Liste des candidats", "birth-name": "Nom de naissance", "date-of-birth": { "example": "(jj/mm/aaaa)", @@ -40,7 +39,8 @@ "division": "Classe", "external-id": "Identifiant local", "first-name": "Prénom", - "signature": "Signature" + "signature": "Signature", + "title": "Liste des candidats" } }, "campaign-export": { @@ -156,7 +156,6 @@ }, "certification-center-invitation-email": { "params": { - "title": "Invitation à rejoindre l’espace", "acceptInvitation": "Accepter l’invitation", "doNotAnswer": "Ceci est un e-mail automatique, merci de ne pas y répondre.", "here": "ici", @@ -164,6 +163,7 @@ "needHelp": "Besoin d’aide, contactez-nous", "oneTimeLink": "Ce lien est à usage unique", "pixCertifPresentation": "L’espace Pix Certif est un outil dédié à l’organisation des sessions de certification.", + "title": "Invitation à rejoindre l’espace", "yourCertificationCenter": "Votre centre de certification" }, "subject": "Invitation à rejoindre Pix Certif" @@ -176,7 +176,6 @@ "max-reachable-level-indication": "* À la date d’obtention de cette certification, le nombre maximum de pix atteignable était de { maxReachableScore }, correspondant au niveau { maxReachableLevelOnCertificationDate }." }, "certification-result-email": { - "title": "Consultez les résultats de la session de certification n° {sessionId} !", "params": { "doNotReply": "Ceci est un e-mail automatique, merci de ne pas y répondre.", "download": "Télécharger les résultats", @@ -190,7 +189,8 @@ "resultsAvailable": "Les résultats des certifications Pix que vous avez prescrites à vos publics sont disponibles.", "subject": "[Pix] Certification session", "viewResultsInProfile": "Les candidats peuvent consulter leur résultat depuis leur profil Pix." - } + }, + "title": "Consultez les résultats de la session de certification n° {sessionId} !" }, "certification-results-csv": { "filenames": { @@ -347,7 +347,6 @@ }, "organization-invitation-email": { "params": { - "title": "Vous êtes invité(e) à rejoindre Pix Orga", "acceptInvitation": "Accepter l’invitation", "doNotAnswer": "Ceci est un e-mail automatique, merci de ne pas y répondre.", "here": "ici", @@ -356,6 +355,7 @@ "oneTimeLink": "Ce lien est à usage unique", "pixPresentation": "Pix est le service public en ligne pour évaluer, développer et certifier ses compétences numériques.", "subtitle": "La plateforme Pix Orga vous permet de créer, gérer des campagnes de test et suivre la progression de vos participants.", + "title": "Vous êtes invité(e) à rejoindre Pix Orga", "yourOrganization": "Votre organisation" }, "subject": "Invitation à rejoindre Pix Orga" @@ -377,7 +377,6 @@ }, "reset-password-demand-email": { "params": { - "title": "Réinitialisation de votre mot de passe", "clickOnTheButton": "Cliquez sur le bouton ci-dessous pour choisir un nouveau mot de passe.", "contactUs": "contactez-nous ici", "doNotAnswer": "Ceci est un e-mail automatique, merci de ne pas y répondre. Besoin d’aide, ", @@ -385,6 +384,7 @@ "moreOn": "En savoir plus sur", "pixPresentation": "Pix est le service public en ligne pour évaluer, développer et certifier ses compétences numériques.", "resetMyPassword": "Définir un nouveau mot de passe", + "title": "Réinitialisation de votre mot de passe", "weCannotSendYourPassword": "Bonjour, pour des raisons de sécurité, nous ne vous envoyons pas votre mot de passe par e-mail." }, "subject": "Demande de réinitialisation de mot de passe Pix"