diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 37ffd108d7730f..3a45d46992757e 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -38,14 +38,12 @@ pnpm-lock.yaml /curriculum/challenges/english/* @freecodecamp/curriculum # ------------------------------------------------- -# Files that need attention from Staff +# Files that need attention from i18n & dev team # ------------------------------------------------- -# README, LICENSE, etc. -/*.md @freeCodeCamp/staff - # i18n Quotes -**/motivation.json @freeCodeCamp/staff @freeCodeCamp/i18n +**/motivation.json @freeCodeCamp/dev-team @freeCodeCamp/i18n + # ------------------------------------------------- # Files that need attention from the mobile team diff --git a/.github/workflows/node.js-tests.yml b/.github/workflows/node.js-tests.yml index 2922fdc41b0391..383d3e2605fd7a 100644 --- a/.github/workflows/node.js-tests.yml +++ b/.github/workflows/node.js-tests.yml @@ -68,7 +68,7 @@ jobs: - name: Lint Source Files run: | echo pnpm version $(pnpm -v) - pnpm turbo lint + pnpm lint # DONT REMOVE THIS JOB. # TODO: Refactor and use re-usable workflow and shared artifacts diff --git a/api/__mocks__/exam-environment-exam.ts b/api/__mocks__/exam-environment-exam.ts index 0c52edc715ef2c..6ff3b7c20b346d 100644 --- a/api/__mocks__/exam-environment-exam.ts +++ b/api/__mocks__/exam-environment-exam.ts @@ -255,6 +255,7 @@ export const generatedExam: ExamEnvironmentGeneratedExam = { export const examAttempt: ExamEnvironmentExamAttempt = { examId, generatedExamId: generatedExam.id, + examModerationId: null, id: oid(), questionSets: [ { diff --git a/api/package.json b/api/package.json index 06558ba4e1d990..a177f2ad9d0fad 100644 --- a/api/package.json +++ b/api/package.json @@ -51,7 +51,6 @@ "dotenv-cli": "7.3.0", "eslint": "^9.39.1", "eslint-plugin-jsdoc": "48.2.1", - "jsdom": "^26.1.0", "msw": "^2.7.0", "prisma": "6.16.2", "supertest": "6.3.3", diff --git a/api/prisma/exam-environment.prisma b/api/prisma/exam-environment.prisma index adad76a56f94be..48e3a0ca41bcbd 100644 --- a/api/prisma/exam-environment.prisma +++ b/api/prisma/exam-environment.prisma @@ -118,26 +118,31 @@ type ExamEnvironmentTagConfig { /// An attempt at an exam in the Exam Environment App model ExamEnvironmentExamAttempt { - id String @id @default(auto()) @map("_id") @db.ObjectId + id String @id @default(auto()) @map("_id") @db.ObjectId /// Foriegn key to user - userId String @db.ObjectId + userId String @db.ObjectId /// Foreign key to exam - examId String @db.ObjectId + examId String @db.ObjectId /// Foreign key to generated exam id - generatedExamId String @db.ObjectId + generatedExamId String @db.ObjectId + /// Un-enforced foreign key to moderation + examModerationId String? @db.ObjectId questionSets ExamEnvironmentQuestionSetAttempt[] /// Time exam was started startTime DateTime /// Version of the record /// The default must be incremented by 1, if anything in the schema changes - version Int @default(3) + version Int @default(4) // Relations - user user @relation(fields: [userId], references: [id], onDelete: Cascade) - exam ExamEnvironmentExam @relation(fields: [examId], references: [id], onDelete: Cascade) - generatedExam ExamEnvironmentGeneratedExam @relation(fields: [generatedExamId], references: [id]) - ExamEnvironmentExamModeration ExamEnvironmentExamModeration[] + user user @relation(fields: [userId], references: [id], onDelete: Cascade) + exam ExamEnvironmentExam @relation(fields: [examId], references: [id], onDelete: Cascade) + generatedExam ExamEnvironmentGeneratedExam @relation(fields: [generatedExamId], references: [id]) + // Ideally, there could be a way to add a one-way optional relation here, but Prisma does not allow that: + // Error parsing attribute "@relation": The relation fields `examAttempt` on Model `ExamEnvironmentExamModeration` and `examModeration` on Model `ExamEnvironmentExamAttempt` both provide the `references` argument in the @relation attribute. You have to provide it only on one of the two fields. + // examModeration ExamEnvironmentExamModeration? @relation(fields: [examModerationId], references: [id]) + examEnvironmentExamModeration ExamEnvironmentExamModeration? } type ExamEnvironmentQuestionSetAttempt { diff --git a/api/src/exam-environment/routes/exam-environment.test.ts b/api/src/exam-environment/routes/exam-environment.test.ts index 9902b4a1fd0ed3..1b473135e607f7 100644 --- a/api/src/exam-environment/routes/exam-environment.test.ts +++ b/api/src/exam-environment/routes/exam-environment.test.ts @@ -590,6 +590,7 @@ describe('/exam-environment/', () => { userId: defaultUserId, examId: mock.examId, generatedExamId: generatedExam!.id, + examModerationId: null, questionSets: [], // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment startTime: expect.any(Date), diff --git a/api/src/exam-environment/routes/exam-environment.ts b/api/src/exam-environment/routes/exam-environment.ts index 41c610d8deb437..323098eb4b50a5 100644 --- a/api/src/exam-environment/routes/exam-environment.ts +++ b/api/src/exam-environment/routes/exam-environment.ts @@ -458,6 +458,7 @@ async function postExamGeneratedExamHandler( userId: user.id, examId: exam.id, generatedExamId: generatedExam.id, + examModerationId: null, startTime: new Date(), questionSets: [] } diff --git a/api/src/exam-environment/utils/exam-environment.test.ts b/api/src/exam-environment/utils/exam-environment.test.ts index 8b1f8871d40551..c2fe078014d3c6 100644 --- a/api/src/exam-environment/utils/exam-environment.test.ts +++ b/api/src/exam-environment/utils/exam-environment.test.ts @@ -518,6 +518,7 @@ describe('Exam Environment Schema', () => { data: { examId: oid(), generatedExamId: oid(), + examModerationId: null, questionSets: [ { id: oid(), diff --git a/api/src/routes/helpers/certificate-utils.ts b/api/src/routes/helpers/certificate-utils.ts index 28a34d03017a20..d33cec87714b0a 100644 --- a/api/src/routes/helpers/certificate-utils.ts +++ b/api/src/routes/helpers/certificate-utils.ts @@ -1,26 +1,18 @@ import { Prisma } from '@prisma/client'; import { certSlugTypeMap, - certIds + certToIdMap, + Certification } from '../../../../shared/config/certification-settings.js'; import { normalizeDate } from '../../utils/normalize.js'; -const { - legacyInfosecQaId, - respWebDesignId, - frontEndDevLibsId, - jsAlgoDataStructId, - dataVis2018Id, - apisMicroservicesId -} = certIds; - const fullStackCertificateIds = [ - respWebDesignId, - jsAlgoDataStructId, - frontEndDevLibsId, - dataVis2018Id, - apisMicroservicesId, - legacyInfosecQaId + certToIdMap[Certification.RespWebDesign], + certToIdMap[Certification.JsAlgoDataStruct], + certToIdMap[Certification.FrontEndDevLibs], + certToIdMap[Certification.DataVis], + certToIdMap[Certification.BackEndDevApis], + certToIdMap[Certification.LegacyInfoSecQa] ]; /** diff --git a/api/src/routes/protected/certificate.test.ts b/api/src/routes/protected/certificate.test.ts index 07a00256eef6a7..773380bfb58af2 100644 --- a/api/src/routes/protected/certificate.test.ts +++ b/api/src/routes/protected/certificate.test.ts @@ -16,6 +16,8 @@ import { setupServer, superRequest } from '../../../vitest.utils.js'; +import { getChallenges } from '../../utils/get-challenges.js'; +import { createCertLookup } from './certificate.js'; describe('certificate routes', () => { setupServer(); @@ -461,3 +463,32 @@ describe('certificate routes', () => { }); }); }); + +describe('createCertLookup', () => { + let challenges: ReturnType; + + beforeAll(() => { + // TODO: create a mock challenges array specific to these tests. + challenges = getChallenges(); + }); + + test('should create a lookup for all certifications', () => { + const certLookup = createCertLookup(challenges); + + for (const cert of Object.values(Certification)) { + const certData = certLookup[cert]; + expect(certData).toHaveProperty('id'); + expect(certData).toHaveProperty('tests'); + expect(certData).toHaveProperty('challengeType'); + } + }); + + test('each certification should have a unique challenge id', () => { + const certLookup = createCertLookup(challenges); + const ids = Object.values(certLookup) + .map(({ id }) => id) + .sort(); + const uniqueIds = Array.from(new Set(ids)).sort(); + expect(uniqueIds).toEqual(ids); + }); +}); diff --git a/api/src/routes/protected/certificate.ts b/api/src/routes/protected/certificate.ts index ad1d8aab8ea0e7..2b0383f4f46190 100644 --- a/api/src/routes/protected/certificate.ts +++ b/api/src/routes/protected/certificate.ts @@ -4,10 +4,10 @@ import type { FastifyPluginCallbackTypebox } from '@fastify/type-provider-typebo import { getChallenges } from '../../utils/get-challenges.js'; import { - certIds, + Certification, certSlugTypeMap, - certTypeTitleMap, - certTypes, + certToIdMap, + certToTitleMap, currentCertifications, legacyCertifications, legacyFullStackCertification, @@ -20,31 +20,6 @@ import { normalizeChallenges, removeNulls } from '../../utils/normalize.js'; import { SHOW_UPCOMING_CHANGES } from '../../utils/env.js'; import { isKnownCertSlug } from '../helpers/certificate-utils.js'; -const { - a2EnglishId, - legacyFrontEndChallengeId, - legacyBackEndChallengeId, - legacyDataVisId, - legacyInfosecQaId, - legacyFullStackId, - respWebDesignId, - frontEndDevLibsId, - javascriptV9Id, - jsAlgoDataStructId, - jsAlgoDataStructV8Id, - dataVis2018Id, - apisMicroservicesId, - qaV7Id, - infosecV7Id, - sciCompPyV7Id, - dataAnalysisPyV7Id, - machineLearningPyV7Id, - relationalDatabaseV8Id, - respWebDesignV9Id, - collegeAlgebraPyV8Id, - foundationalCSharpV8Id -} = certIds; - function isCertAllowed(certSlug: string): boolean { if ( currentCertifications.includes(certSlug) || @@ -108,10 +83,11 @@ function assertTestsExist( } } -function getCertById( - challengeId: string, +function getCertBySlug( + cert: Certification, challenges: ReturnType ): { id: string; tests: { id: string }[]; challengeType: number } { + const challengeId = certToIdMap[cert]; const challengeById = challenges.filter(({ id }) => id === challengeId)[0]; if (!challengeById) { throw new Error(`Challenge with id '${challengeId}' not found`); @@ -121,51 +97,28 @@ function getCertById( return { id, tests, challengeType }; } -function createCertTypeIds(challenges: ReturnType) { - return { - // legacy - [certTypes.frontEnd]: getCertById(legacyFrontEndChallengeId, challenges), - [certTypes.jsAlgoDataStruct]: getCertById(jsAlgoDataStructId, challenges), - [certTypes.backEnd]: getCertById(legacyBackEndChallengeId, challenges), - [certTypes.dataVis]: getCertById(legacyDataVisId, challenges), - [certTypes.infosecQa]: getCertById(legacyInfosecQaId, challenges), - [certTypes.fullStack]: getCertById(legacyFullStackId, challenges), - - // modern - [certTypes.respWebDesign]: getCertById(respWebDesignId, challenges), - [certTypes.frontEndDevLibs]: getCertById(frontEndDevLibsId, challenges), - [certTypes.dataVis2018]: getCertById(dataVis2018Id, challenges), - [certTypes.jsAlgoDataStructV8]: getCertById( - jsAlgoDataStructV8Id, - challenges - ), - [certTypes.apisMicroservices]: getCertById(apisMicroservicesId, challenges), - [certTypes.qaV7]: getCertById(qaV7Id, challenges), - [certTypes.infosecV7]: getCertById(infosecV7Id, challenges), - [certTypes.sciCompPyV7]: getCertById(sciCompPyV7Id, challenges), - [certTypes.dataAnalysisPyV7]: getCertById(dataAnalysisPyV7Id, challenges), - [certTypes.machineLearningPyV7]: getCertById( - machineLearningPyV7Id, - challenges - ), - [certTypes.relationalDatabaseV8]: getCertById( - relationalDatabaseV8Id, - challenges - ), - [certTypes.collegeAlgebraPyV8]: getCertById( - collegeAlgebraPyV8Id, - challenges - ), - [certTypes.foundationalCSharpV8]: getCertById( - foundationalCSharpV8Id, - challenges - ), - [certTypes.javascriptV9]: getCertById(javascriptV9Id, challenges), - [certTypes.respWebDesignV9]: getCertById(respWebDesignV9Id, challenges), - - // upcoming - [certTypes.a2English]: getCertById(a2EnglishId, challenges) - }; +type CertLookup = Record< + Certification, + { id: string; tests: { id: string }[]; challengeType: number } +>; + +/** + * Create a lookup from Certification enum values to their corresponding + * challenge metadata (id, tests and challengeType) using the provided + * challenges array. + * + * @param challenges - The array returned by getChallenges(). + * @returns A record mapping each Certification to an object with id, tests and challengeType. + */ +export function createCertLookup( + challenges: ReturnType +): CertLookup { + const certLookup = {} as CertLookup; + + for (const cert of Object.values(Certification)) { + certLookup[cert] = getCertBySlug(cert, challenges); + } + return certLookup; } interface CertI { @@ -258,7 +211,7 @@ export const protectedCertificateRoutes: FastifyPluginCallbackTypebox = ( done ) => { const challenges = getChallenges(); - const certTypeIds = createCertTypeIds(challenges); + const certLookup = createCertLookup(challenges); // TODO(POST_MVP): Response should not include updated user. If a client wants the updated user, it should make a separate request // OR: Always respond with current user - full user object - not random pieces. @@ -298,7 +251,7 @@ export const protectedCertificateRoutes: FastifyPluginCallbackTypebox = ( } const certType = certSlugTypeMap[certSlug]; - const certName = certTypeTitleMap[certType]; + const certName = certToTitleMap[certSlug]; const user = await fastify.prisma.user.findUnique({ where: { id: req.user?.id } @@ -347,7 +300,7 @@ export const protectedCertificateRoutes: FastifyPluginCallbackTypebox = ( } as const; } - const { id, tests, challengeType } = certTypeIds[certType]; + const { id, tests, challengeType } = certLookup[certSlug]; const hasCompletedTestRequirements = hasCompletedTests( tests, user.completedChallenges diff --git a/api/src/routes/protected/user.test.ts b/api/src/routes/protected/user.test.ts index 196a038b8ffa99..6124c88dc2fe49 100644 --- a/api/src/routes/protected/user.test.ts +++ b/api/src/routes/protected/user.test.ts @@ -307,7 +307,7 @@ const publicUserData = { portfolio: testUserData.portfolio, profileUI: testUserData.profileUI, savedChallenges: testUserData.savedChallenges, - twitter: 'https://twitter.com/foobar', + twitter: 'https://x.com/foobar', bluesky: 'https://bsky.app/profile/foobar', sendQuincyEmail: testUserData.sendQuincyEmail, username: testUserData.username, diff --git a/api/src/routes/public/certificate.ts b/api/src/routes/public/certificate.ts index ebca823245c5bd..24d5848db827b8 100644 --- a/api/src/routes/public/certificate.ts +++ b/api/src/routes/public/certificate.ts @@ -4,8 +4,8 @@ import { find } from 'lodash-es'; import * as schemas from '../../schemas.js'; import { certSlugTypeMap, - certTypeTitleMap, - certTypeIdMap, + certToTitleMap, + certToIdMap, completionHours, oldDataVizId } from '../../../../shared/config/certification-settings.js'; @@ -52,9 +52,9 @@ export const unprotectedCertificateRoutes: FastifyPluginCallbackTypebox = ( } const certType = certSlugTypeMap[certSlug]; - const certId = certTypeIdMap[certType]; - const certTitle = certTypeTitleMap[certType]; - const completionTime = completionHours[certType] || 300; + const certId = certToIdMap[certSlug]; + const certTitle = certToTitleMap[certSlug]; + const completionTime = completionHours[certSlug] || 300; const user = await fastify.prisma.user.findFirst({ where: { username }, select: { @@ -180,16 +180,15 @@ export const unprotectedCertificateRoutes: FastifyPluginCallbackTypebox = ( } if (!user[certType]) { - const cert = certTypeTitleMap[certType]; logger.info( - `User ${username} has not completed the ${cert} certification.` + `User ${username} has not completed the ${certTitle} certification.` ); return reply.send({ messages: [ { type: 'info', message: 'flash.user-not-certified', - variables: { username, cert } + variables: { username, cert: certTitle } } ] }); diff --git a/api/src/routes/public/user.test.ts b/api/src/routes/public/user.test.ts index 2b2674c71587d0..e72b8af39f2cf5 100644 --- a/api/src/routes/public/user.test.ts +++ b/api/src/routes/public/user.test.ts @@ -218,7 +218,7 @@ const publicUserData = { points: 2, portfolio: testUserData.portfolio, profileUI: testUserData.profileUI, - twitter: 'https://twitter.com/foobar', + twitter: 'https://x.com/foobar', bluesky: 'https://bsky.app/profile/foobar', username: testUserData.username, usernameDisplay: testUserData.usernameDisplay, diff --git a/api/src/utils/normalize.test.ts b/api/src/utils/normalize.test.ts index ee0267dda04326..c7fd9c88c8d388 100644 --- a/api/src/utils/normalize.test.ts +++ b/api/src/utils/normalize.test.ts @@ -12,14 +12,12 @@ import { describe('normalize', () => { describe('normalizeTwitter', () => { test('returns the input if it is a url', () => { - const url = 'https://twitter.com/a_generic_user'; + const url = 'https://x.com/a_generic_user'; expect(normalizeTwitter(url)).toEqual(url); }); - test('adds the handle to twitter.com if it is not a url', () => { + test('adds the handle to x.com if it is not a url', () => { const handle = '@a_generic_user'; - expect(normalizeTwitter(handle)).toEqual( - 'https://twitter.com/a_generic_user' - ); + expect(normalizeTwitter(handle)).toEqual('https://x.com/a_generic_user'); }); test('returns undefined if that is the input', () => { expect(normalizeTwitter('')).toBeUndefined(); @@ -193,6 +191,10 @@ describe('normalize', () => { 'Unexpected date value: {"date":"123"}' ); }); + + test('should handle string numbers', () => { + expect(normalizeDate('1696118400000')).toEqual(1696118400000); + }); }); describe('normalizeChallengeType', () => { diff --git a/api/src/utils/normalize.ts b/api/src/utils/normalize.ts index b6d1c422f152cf..c603764ee59b91 100644 --- a/api/src/utils/normalize.ts +++ b/api/src/utils/normalize.ts @@ -35,7 +35,7 @@ export const normalizeTwitter = ( try { new URL(handleOrUrl); } catch { - url = `https://twitter.com/${handleOrUrl.replace(/^@/, '')}`; + url = `https://x.com/${handleOrUrl.replace(/^@/, '')}`; } return url ?? handleOrUrl; }; @@ -76,9 +76,16 @@ export const normalizeDate = (date?: Prisma.JsonValue): number => { typeof date.$date === 'string' ) { return new Date(date.$date).getTime(); - } else { - throw Error('Unexpected date value: ' + JSON.stringify(date)); + } else if (typeof date === 'string') { + const parsed = Number(date); + if (!isNaN(parsed)) { + // Number() handles invalid strings e.g. '2023-10-01T00:00:00Z' + // parseInt() handles floats + return parseInt(String(parsed)); + } } + + throw Error('Unexpected date value: ' + JSON.stringify(date)); }; /** diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index 682ff094010dc3..00000000000000 --- a/babel.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - babelrcRoots: ['./client'] -}; diff --git a/client/i18n/locales/chinese-traditional/intro.json b/client/i18n/locales/chinese-traditional/intro.json index cfaa977f8c3173..5209d35d47df69 100644 --- a/client/i18n/locales/chinese-traditional/intro.json +++ b/client/i18n/locales/chinese-traditional/intro.json @@ -4493,7 +4493,7 @@ ] }, "lab-rpg-character": { - "title": "Build an RPG character", + "title": "Build an RPG Character", "intro": [ "In this lab you will practice basic python by building an RPG character." ] @@ -7514,8 +7514,14 @@ }, "a1-professional-spanish": { "title": "A1 Professional Spanish Certification (Beta)", - "note": "This certification is currently in active development. While there isn't a claimable certification available for this section at the moment, one will be available soon. In the meantime, you're welcome to explore the courses we have created below.", - "intro": ["Placeholder intro"], + "note": "This certification is currently in active development. We are currently publishing the first three chapters, and future chapters will be released as they are developed by our instructional design team. Once all the chapters are available, we will release the certification exam.", + "intro": [ + "This course teaches you the fundamentals of Spanish at the A1 level of the Common European Framework of Reference (CEFR), with lessons focused on professional settings. Each module is broken down into sections:", + "- A Warm-up section for quick review.", + "- Learn sections with new vocabulary and grammar.", + "- Practice sections to check your comprehension and writing skills.", + "- A Review section with key grammar and vocabulary." + ], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", "es-a1-chapter-spanish-fundamentals": "Spanish Fundamentals", @@ -7731,6 +7737,7 @@ "chapters": { "html": "HTML", "css": "CSS", + "computers": "Computers", "responsive-web-design-certification-exam": "Responsive Web Design Certification Exam" }, "modules": { diff --git a/client/i18n/locales/chinese-traditional/translations.json b/client/i18n/locales/chinese-traditional/translations.json index 918b00d41992cc..79d94c3564d036 100644 --- a/client/i18n/locales/chinese-traditional/translations.json +++ b/client/i18n/locales/chinese-traditional/translations.json @@ -281,7 +281,7 @@ "disabled": "如果設置爲僅自己可見,其他人將無法訪問你的認證。", "private-name": "如果你將名字設置爲私密,你的認證將不會顯示你的名字。", "claim-legacy": "當你獲得下列 freeCodeCamp 認證之後,你可以申請 {{cert}}:", - "for": "{{username}} 賬戶設置", + "for": "Settings for {{username}}", "sound-mode": "爲整個網站添加令人愉快的吉他原聲音樂。在編輯器輸入、完成挑戰、申請認證等時刻,你將獲得音樂反饋。", "sound-volume": "營火音效音量", "scrollbar-width": "編輯器滾動條寬度", @@ -315,7 +315,7 @@ "results-for": "{{projectTitle}} 的結果", "my-profile": "我的個人資料", "my-name": "我的姓名", - "my-location": "我的位置", + "my-location": "My stated location (freeCodeCamp does not track your actual location)", "my-about": "我的介紹", "my-points": "我的分數", "my-heatmap": "我的熱圖", @@ -328,12 +328,13 @@ "keyboard-shortcuts": "啓用鍵盤快捷鍵" }, "headings": { + "account": "Account", "certs": "認證", "legacy-certs": "舊版認證", "honesty": "學術誠信條例", "internet": "你在各平臺的賬戶", "portfolio": "作品集設置", - "privacy": "隱私設置", + "privacy": "Privacy", "personal-info": "個人信息" }, "danger": { @@ -362,7 +363,7 @@ }, "email": { "missing": "你的賬戶未綁定郵箱。", - "heading": "郵件設置", + "heading": "Email", "not-verified": "你的郵箱已驗證。", "check": "請查看你的郵件,或<0>在此處請求新的驗證郵件。", "current": "當前郵箱", @@ -963,7 +964,9 @@ "editor-a11y-on-non-macos": "{{editorName}} 編輯器內容。無障礙模式被設置爲 “on”。按 Ctrl+E 關閉或者按 Alt+F1 查看更多選項。", "terminal-output": "終端輸出", "not-available": "不可用", - "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page." + "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page.", + "pinyin-to-hanzi-input-desc": "This task uses Pinyin-to-Hanzi inputs. Type pinyin with tone numbers (1 to 5). When you enter a correct syllable, it will turn into a Chinese character. If you press backspace after a Chinese character, it will change back to pinyin and remove the last thing you typed: if it's a tone number, the tone is removed; if it's a letter, the letter is removed.", + "pinyin-tone-input-desc": "This task uses Pinyin Tone inputs. Type pinyin with tone numbers (1 to 5). When you enter a tone number, it will be converted to a tone mark. If you press backspace, the last thing you typed is removed: if it's a tone number, the tone is removed; if it's a letter, the letter is removed." }, "flash": { "no-email-in-userinfo": "我們無法從你所選的供應商處獲取該電子郵件。請嘗試其他供應商,或者使用“繼續使用電子郵件”選項。", diff --git a/client/i18n/locales/chinese/intro.json b/client/i18n/locales/chinese/intro.json index b77913d169847a..dc5c53fc10f507 100644 --- a/client/i18n/locales/chinese/intro.json +++ b/client/i18n/locales/chinese/intro.json @@ -4493,7 +4493,7 @@ ] }, "lab-rpg-character": { - "title": "Build an RPG character", + "title": "Build an RPG Character", "intro": [ "In this lab you will practice basic python by building an RPG character." ] @@ -7514,8 +7514,14 @@ }, "a1-professional-spanish": { "title": "A1 Professional Spanish Certification (Beta)", - "note": "This certification is currently in active development. While there isn't a claimable certification available for this section at the moment, one will be available soon. In the meantime, you're welcome to explore the courses we have created below.", - "intro": ["Placeholder intro"], + "note": "This certification is currently in active development. We are currently publishing the first three chapters, and future chapters will be released as they are developed by our instructional design team. Once all the chapters are available, we will release the certification exam.", + "intro": [ + "This course teaches you the fundamentals of Spanish at the A1 level of the Common European Framework of Reference (CEFR), with lessons focused on professional settings. Each module is broken down into sections:", + "- A Warm-up section for quick review.", + "- Learn sections with new vocabulary and grammar.", + "- Practice sections to check your comprehension and writing skills.", + "- A Review section with key grammar and vocabulary." + ], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", "es-a1-chapter-spanish-fundamentals": "Spanish Fundamentals", @@ -7731,6 +7737,7 @@ "chapters": { "html": "HTML", "css": "CSS", + "computers": "Computers", "responsive-web-design-certification-exam": "Responsive Web Design Certification Exam" }, "modules": { diff --git a/client/i18n/locales/chinese/translations.json b/client/i18n/locales/chinese/translations.json index ace9d6d82a2c65..2af0e4ad78d3f4 100644 --- a/client/i18n/locales/chinese/translations.json +++ b/client/i18n/locales/chinese/translations.json @@ -281,7 +281,7 @@ "disabled": "如果设置为仅自己可见,其他人将无法访问你的认证。", "private-name": "如果你将名字设置为私密,你的认证将不会显示你的名字。", "claim-legacy": "当你获得下列 freeCodeCamp 认证之后,你可以申请 {{cert}}:", - "for": "{{username}} 账户设置", + "for": "Settings for {{username}}", "sound-mode": "为整个网站添加令人愉快的吉他原声音乐。在编辑器输入、完成挑战、申请认证等时刻,你将获得音乐反馈。", "sound-volume": "营火音效音量", "scrollbar-width": "编辑器滚动条宽度", @@ -315,7 +315,7 @@ "results-for": "{{projectTitle}} 的结果", "my-profile": "我的个人资料", "my-name": "我的姓名", - "my-location": "我的位置", + "my-location": "My stated location (freeCodeCamp does not track your actual location)", "my-about": "我的介绍", "my-points": "我的分数", "my-heatmap": "我的热图", @@ -328,12 +328,13 @@ "keyboard-shortcuts": "启用键盘快捷键" }, "headings": { + "account": "Account", "certs": "认证", "legacy-certs": "旧版认证", "honesty": "学术诚信条例", "internet": "你在各平台的账户", "portfolio": "作品集设置", - "privacy": "隐私设置", + "privacy": "Privacy", "personal-info": "个人信息" }, "danger": { @@ -362,7 +363,7 @@ }, "email": { "missing": "你的账户未绑定邮箱。", - "heading": "邮件设置", + "heading": "Email", "not-verified": "你的邮箱已验证。", "check": "请查看你的邮件,或<0>在此处请求新的验证邮件。", "current": "当前邮箱", @@ -963,7 +964,9 @@ "editor-a11y-on-non-macos": "{{editorName}} 编辑器内容。无障碍模式被设置为 “on”。按 Ctrl+E 关闭或者按 Alt+F1 查看更多选项。", "terminal-output": "终端输出", "not-available": "不可用", - "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page." + "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page.", + "pinyin-to-hanzi-input-desc": "This task uses Pinyin-to-Hanzi inputs. Type pinyin with tone numbers (1 to 5). When you enter a correct syllable, it will turn into a Chinese character. If you press backspace after a Chinese character, it will change back to pinyin and remove the last thing you typed: if it's a tone number, the tone is removed; if it's a letter, the letter is removed.", + "pinyin-tone-input-desc": "This task uses Pinyin Tone inputs. Type pinyin with tone numbers (1 to 5). When you enter a tone number, it will be converted to a tone mark. If you press backspace, the last thing you typed is removed: if it's a tone number, the tone is removed; if it's a letter, the letter is removed." }, "flash": { "no-email-in-userinfo": "我们无法从你所选的供应商处获取该电子邮件。请尝试其他供应商,或者使用“继续使用电子邮件”选项。", diff --git a/client/i18n/locales/english/intro.json b/client/i18n/locales/english/intro.json index 5b2b6ca862568c..ddbe14f4f9d26b 100644 --- a/client/i18n/locales/english/intro.json +++ b/client/i18n/locales/english/intro.json @@ -1394,7 +1394,7 @@ } }, "a2-english-for-developers": { - "title": "A2 English for Developers Certification", + "title": "A2 English for Developers Certification (Beta)", "intro": [ "In this English for Developers Curriculum, you'll learn the essentials of English communication. This will follow the A2 level of the Common European Framework of Reference (CEFR). And we've focused on vocabulary that is particularly useful for developers.", "The first half of the curriculum will help you get comfortable with English grammar and usage. It will give you tons of hands-on practice. You'll learn basics like introducing yourself, making small talk, and discussing your work.", @@ -7528,8 +7528,14 @@ }, "a1-professional-spanish": { "title": "A1 Professional Spanish Certification (Beta)", - "note": "This certification is currently in active development. While there isn't a claimable certification available for this section at the moment, one will be available soon. In the meantime, you're welcome to explore the courses we have created below.", - "intro": ["Placeholder intro"], + "note": "This certification is currently in active development. We are currently publishing the first three chapters, and future chapters will be released as they are developed by our instructional design team. Once all the chapters are available, we will release the certification exam.", + "intro": [ + "This course teaches you the fundamentals of Spanish at the A1 level of the Common European Framework of Reference (CEFR), with lessons focused on professional settings. Each module is broken down into sections:", + "- A Warm-up section for quick review.", + "- Learn sections with new vocabulary and grammar.", + "- Practice sections to check your comprehension and writing skills.", + "- A Review section with key grammar and vocabulary." + ], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", "es-a1-chapter-spanish-fundamentals": "Spanish Fundamentals", @@ -7739,6 +7745,7 @@ "chapters": { "html": "HTML", "css": "CSS", + "computers": "Computers", "responsive-web-design-certification-exam": "Responsive Web Design Certification Exam" }, "modules": { diff --git a/client/i18n/locales/english/translations.json b/client/i18n/locales/english/translations.json index 8965e8b6527074..c90ef531d8fa99 100644 --- a/client/i18n/locales/english/translations.json +++ b/client/i18n/locales/english/translations.json @@ -281,7 +281,7 @@ "disabled": "Your certifications will be disabled, if set to private.", "private-name": "Your name will not appear on your certifications, if this is set to private.", "claim-legacy": "Once you've earned the following freeCodeCamp certifications, you'll be able to claim the {{cert}}:", - "for": "Account Settings for {{username}}", + "for": "Settings for {{username}}", "sound-mode": "This adds the pleasant sound of acoustic guitar throughout the website. You'll get musical feedback as you type in the editor, complete challenges, claim certifications, and more.", "sound-volume": "Campfire Volume:", "scrollbar-width": "Editor Scrollbar Width", @@ -315,7 +315,7 @@ "results-for": "Results for {{projectTitle}}", "my-profile": "My profile", "my-name": "My name", - "my-location": "My location", + "my-location": "My stated location (freeCodeCamp does not track your actual location)", "my-about": "My about", "my-points": "My points", "my-heatmap": "My heatmap", @@ -328,12 +328,13 @@ "keyboard-shortcuts": "Enable Keyboard Shortcuts" }, "headings": { + "account": "Account", "certs": "Certifications", "legacy-certs": "Legacy Certifications", "honesty": "Academic Honesty Policy", "internet": "Your Internet Presence", "portfolio": "Portfolio Settings", - "privacy": "Privacy Settings", + "privacy": "Privacy", "personal-info": "Personal Information" }, "danger": { @@ -362,7 +363,7 @@ }, "email": { "missing": "You do not have an email associated with this account.", - "heading": "Email Settings", + "heading": "Email", "not-verified": "Your email has not been verified.", "check": "Please check your email, or <0>request a new verification email here.", "current": "Current Email", @@ -929,7 +930,7 @@ "linkedin": "Link to {{username}}'s LinkedIn", "github": "Link to {{username}}'s GitHub", "website": "Link to {{username}}'s website", - "twitter": "Link to {{username}}'s Twitter", + "twitter": "Link to {{username}}'s X", "next-month": "Go to next month", "previous-month": "Go to previous month", "first-page": "Go to first page", @@ -963,7 +964,9 @@ "editor-a11y-on-non-macos": "{{editorName}} editor content. Accessibility mode set to 'on'. Press Ctrl+E to disable or press Alt+F1 for more options.", "terminal-output": "Terminal output", "not-available": "Not available", - "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page." + "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page.", + "pinyin-to-hanzi-input-desc": "This task uses Pinyin-to-Hanzi inputs. Type pinyin with tone numbers (1 to 5). When you enter a correct syllable, it will turn into a Chinese character. If you press backspace after a Chinese character, it will change back to pinyin and remove the last thing you typed: if it's a tone number, the tone is removed; if it's a letter, the letter is removed.", + "pinyin-tone-input-desc": "This task uses Pinyin Tone inputs. Type pinyin with tone numbers (1 to 5). When you enter a tone number, it will be converted to a tone mark. If you press backspace, the last thing you typed is removed: if it's a tone number, the tone is removed; if it's a letter, the letter is removed." }, "flash": { "no-email-in-userinfo": "We could not retrieve an email from your chosen provider. Please try another provider or use the 'Continue with Email' option.", @@ -1226,7 +1229,7 @@ "foundational-c-sharp-with-microsoft": "Foundational C# with Microsoft", "foundational-c-sharp-with-microsoft-cert": "Foundational C# with Microsoft Certification", "a2-english-for-developers": "A2 English for Developers", - "a2-english-for-developers-cert": "A2 English for Developers Certification", + "a2-english-for-developers-cert": "A2 English for Developers Certification (Beta)", "b1-english-for-developers": "B1 English for Developers", "b1-english-for-developers-cert": "B1 English for Developers Certification", "responsive-web-design-v9": "Responsive Web Design", diff --git a/client/i18n/locales/espanol/intro.json b/client/i18n/locales/espanol/intro.json index 0e36c79ea41bff..bf7243ef54356d 100644 --- a/client/i18n/locales/espanol/intro.json +++ b/client/i18n/locales/espanol/intro.json @@ -155,7 +155,7 @@ "title": "Aprende diseño web adaptativo construyendo un piano", "intro": [ "El diseño adaptativo indica a tu página web cómo debe verse en pantallas de distintos tamaños.", - "In this course, you'll use CSS and responsive design to code a piano. You'll also learn more about media queries and pseudo selectors." + "En este curso, usarás CSS y diseño responsivo para programar un piano. También aprenderás más acerca de las consultas de medios y pseudoselectores." ] }, "learn-css-flexbox-by-building-a-photo-gallery": { @@ -309,10 +309,10 @@ "note": "Nota: Algunas extensiones de tu navegador, como bloqueadores de ventanas y bloqueadores de comandos pueden interferir con los ejercicios. Si tienes problemas, te recomendamos deshabilitar las extensiones que modifican o bloquean el contenido de las páginas mientras estés tomando el curso.", "blocks": { "build-an-rpg-creature-search-app-project": { - "title": "Build an RPG Creature Search App Project", + "title": "Construir un proyecto de búsqueda de RPG Creature", "intro": [ - "This is one of the required projects to earn your certification.", - "For this project, you will build an RPG creature search app." + "Este es uno de los proyectos necesarios para obtener su certificación.", + "Para este proyecto, construirás una aplicación de búsqueda de criaturas RPG." ] }, "build-a-cash-register-project": { @@ -673,10 +673,10 @@ ] }, "learn-relational-databases-by-building-a-database-of-video-game-characters": { - "title": "Learn Relational Databases by Building a Database of Video Game Characters", + "title": "Aprenda Base de Datos Relacionales Creando una Base de Datos de Personaje de Videojuegos", "intro": [ - "A relational database organizes data into tables that are linked together through relationships.", - "In this 165-lesson course, you will learn the basics of a relational database by creating a PostgreSQL database filled with video game characters." + "Una base de datos relacional organiza datos en tablas que están vinculadas entre sí a través de relaciones.", + "En este curso de 165 lecciones, aprenderás los fundamentos de una base de datos relacional creando una base de datos PostgreSQL llena de personajes de videojuego." ] }, "learn-sql-by-building-a-student-database-part-1": { @@ -890,7 +890,7 @@ "learn-special-methods-by-building-a-vector-space": { "title": "Aprender métodos especiales construyendo un espacio vectorial", "intro": [ - "Python special methods are called in response to specific operations and enable you to customize the behavior of your objects in a detailed and effective way.", + "Los metodos especiales de Python son llamados en respuesta a operaciones especificas y te permiten personalizar efectiva y detalladamente el comportamiento de tus objetos.", "En este proyecto, vas a explorar algunos de los métodos especiales más comunes mientras aprendes sobre vectores construyendo un espacio vectorial." ] }, @@ -1167,7 +1167,7 @@ "intro": [ "Estos ejercicios de programación gratuita le enseñarán algunos algoritmos comunes que probablemente encontrará en la vida real. Son una gran oportunidad para mejorar su lógica y habilidades de programación.", "Estos algoritmos se utilizan frecuentemente en entrevistas de trabajo para probar las habilidades de un candidato. Le daremos explicaciones claras y concisas de cómo funcionan estos diferentes algoritmos para que pueda implementar una solución para cada uno.", - "NOTE: These challenges support JavaScript only solutions." + "NOTA: Estos desafíos sólo soportan soluciones Javascript." ] }, "data-structures": { @@ -1175,7 +1175,7 @@ "intro": [ "Estos cursos de programación gratuita están pensados para ayudarle a manejar estructuras de datos grandes y complejas con las que todavía no esté familiarizado.", "Realizando los cursos siguientes, aprenderás sobre cada tipo de estructura de datos, e implementarás algoritmos para reforzar tu entendimiento de ellos.", - "NOTE: These challenges support JavaScript only solutions." + "NOTA: Estos desafíos sólo soportan soluciones Javascript." ] }, "take-home-projects": { @@ -1193,9 +1193,9 @@ "El Proyecto Odin fue creado en 2013 por un solitario desarrollador, Erik Trautman. A través de los años, ha surgido una comunidad de código abierto para mantener y ampliar el proyecto.", "freeCodeCamp ha ampliado el plan de estudios para el código abierto y hacer que se ejecute de forma interactiva en el navegador, con pruebas para evaluar tu código y garantizar que hayas comprendido los conceptos clave.", "Si tu quieres la experiencia original de toda la configuración del Proyecto Odin para ejecutarlo dentro de tu computadora local, tu puedes verificar el Proyecto Odin original en sitio web del Proyecto Odin. Un abrazo gracias a la comunidad de El Proyecto Odin por continuar este valioso recurso de aprendizaje para desarrolladores alrededor de todo el mundo.", - "This course is unofficial, and not endorsed by The Odin Project. Changes to The Odin Project curriculum content have been made, and all instructional material for this course is licensed under CC-BY-SA-NC 4.0", + "Este curso no es oficial y no está avalado por el proyecto Odin. Se han hecho cambios en el contenido del plan de estudios del Proyecto Odin, y todo el material educativo de este curso está licenciado bajo CC-BY-SA-NC 4.0", "© El Proyecto Odin", - "This course includes content from JavaScript.info, which is licensed under CC-BY-NC-SA 4.0." + "Este curso incluye contenido de JavaScript.info, el cual está licenciado bajo CC-BY-NC-SA 4.0." ], "blocks": { "top-learn-html-foundations": { @@ -1291,7 +1291,7 @@ ] }, "top-build-a-rock-paper-scissors-game": { - "title": "Build a Rock Paper Scissors Game", + "title": "Crea un juego de piedra papel o tijeras", "intro": [ "Pon a prueba tus conocimientos de JavaScript creando un juego de piedra, papel o tijera." ] @@ -1309,41 +1309,41 @@ "title": "Proyectos Euler del 1 a 100", "intro": [ "En este primer conjunto de desafíos, utilizarás conceptos matemáticos como la secuencia de Fibonacci, teoría de números primos, y combinatorios para escribir algoritmos eficientes para resolver estos problemas.", - "NOTE: These challenges support JavaScript only solutions." + "NOTA: Estos desafíos sólo soportan soluciones Javascript." ] }, "project-euler-problems-101-to-200": { "title": "Proyectos Euler del 101 a 200", "intro": [ "En este conjunto de desafíos, basarás las habilidades que aprendiste en la primera parte del curso y usarás conceptos más avanzados como el cálculo del vector, La pirámide, y el algoritmo RSA para resolver estos problemas de forma eficiente.", - "NOTE: These challenges support JavaScript only solutions." + "NOTA: Estos desafíos sólo soportan soluciones Javascript." ] }, "project-euler-problems-201-to-300": { "title": "Proyectos Euler del 201 a 300", "intro": [ "En este conjunto de desafíos, continuarás construyendo sobre las habilidades que aprendiste anteriormente y usarás conceptos como el teorema binomial, Números de estancamiento, y la secuencia de Collatz para desarrollar aún más tus habilidades de matemáticas y resolución de problemas.", - "NOTE: These challenges support JavaScript only solutions." + "NOTA: Estos desafíos sólo soportan soluciones Javascript." ] }, "project-euler-problems-301-to-400": { "title": "Proyectos Euler del 301 a 400", "intro": [ "Aquí continuarás exprimiendo tus habilidades matemáticas y algorítmicas mientras usas conceptos como teoría de juegos combinatorios, las operaciones bitwise y la secuencia autodescriptiva de Golomb para desarrollar soluciones eficientes a estos problemas.", - "NOTE: These challenges support JavaScript only solutions." + "NOTA: Estos desafíos sólo soportan soluciones Javascript." ] }, "project-euler-problems-401-to-480": { "title": "Proyecto Euler Problemas 401 a 480", "intro": [ "En este último conjunto de desafíos, necesitarás aprovechar todo lo que aprendiste hasta este punto y utilizar conceptos avanzados como divisores unitarios, la rutina de Kaprekar y mucho más para resolver estos problemas complejos.", - "NOTE: These challenges support JavaScript only solutions." + "NOTA: Estos desafíos sólo soportan soluciones Javascript." ] } } }, "foundational-c-sharp-with-microsoft": { - "title": "Free Foundational C# with Microsoft Certification", + "title": "C# fundacional gratuita con certificación Microsoft", "intro": [ "Este curso ofrece una introducción completa a la programación en C#, abarcando sus conceptos básicos, sintaxis y aplicación práctica en el desarrollo de software.", "A través de ejercicios prácticos y proyectos, aprenderá los fundamentos de C#, incluyendo variables, tipos de datos, estructuras de control y principios de programación orientados a objetos.", @@ -1453,9 +1453,9 @@ ] }, "learn-how-to-discuss-roles-and-responsibilities": { - "title": "Learn How to Discuss Roles and Responsibilities", + "title": "Aprende a hablar sobre roles y responsabilidades", "intro": [ - "In this course, you'll discuss people's roles and responsibilities in a company and out of it. You'll discover how to ask about these roles and responsibilities and how to share information about you related to the topic." + "En este curso, hablaremos sobre los roles de las personas y sus responsabilidades en una compañía y fuera de ella. Aprenderás a preguntar sobre estos roles y responsabilidades y cómo compartir información sobre tí relacionada con este tema." ] }, "learn-how-to-have-a-conversation-about-preferences-and-motivations": { @@ -1638,61 +1638,61 @@ "learn-how-to-express-agreement": { "title": "Aprende a expresar tu acuerdo", "intro": [ - "In this course, you will learn to express agreement in different professional settings." + "En este curso aprenderás a expresar tu acuerdo en diferentes entornos profesionales." ] }, "learn-how-to-express-disagreement": { "title": "Aprende a expresar desacuerdos", "intro": [ - "In this course, you will learn to express disagreement in different professional settings." + "En este curso aprenderás a expresar desacuerdo en distintos ámbitos profesionales." ] }, "learn-how-to-express-concerns": { "title": "Aprende a expresar tus preocupaciones", "intro": [ - "In this course, you will learn to inform other people that you are worried about things that might happen to your projects and tasks." + "En este curso, aprenderás a informar a otras personas de que estás preocupado por cosas que puedan pasar a tus proyectos y tareas." ] }, "learn-how-to-express-decisions-based-on-comparisons": { "title": "Aprende a expresar decisiones basadas en comparaciones", "intro": [ - "In this course, you will learn how to compare things like tools or companies using words like better, faster, and the best. You will also practice having friendly conversations to give opinions and make decisions" + "En este curso aprenderás a comparar cosas como herramientas o empresas usando palabras como mejor, más rápido y mejor. También practicarás teniendo conversaciones amistosas para dar opiniones y tomar decisiones" ] }, "learn-how-to-use-modal-verbs": { "title": "Aprende a utilizar los verbos modales", "intro": [ - "In this course, you will learn how to talk about rules, describe things that are necessary, and what could happen if they aren't. You'll also practice asking and answering questions clearly, and adding helpful details to your ideas." + "En este curso, aprenderás a hablar de normas, describir las cosas que son necesarias y lo que podría pasar si no lo fueran. También practicarás preguntando y respondiendo preguntas claramente, y añadiendo detalles útiles a tus ideas." ] }, "learn-how-to-manage-a-conversation": { "title": "Aprende a gestionar una conversación", "intro": [ - "In this course, you will learn how to manage conversations at work — like how to continue a talk after a break, change topics politely, or interrupt when needed. You'll also practice using useful expressions to keep the conversation clear, friendly, and organized." + "En este curso, aprenderás cómo manejar conversaciones en el trabajo - tales como continuar una charla después de un descanso, cambiar temas educadamente, o interrumpir cuando sea necesario. También practicarás usando expresiones útiles para mantener una conversación clara, amistosa y organizada." ] }, "learn-how-to-clarify-misunderstandings": { "title": "Aprende a aclarar malentendidos", "intro": [ - "In this course, you will learn how to ask for and give explanations when something is not clear, using polite questions and helpful responses. You'll also practice guessing the meaning of new words, describing problems, and clearing up misunderstandings in a friendly and professional way." + "En este curso, aprenderás a pedir y dar explicaciones cuando algo no esté claro, usando preguntas educadas y respuestas útiles. También practicarás adivinar el significado de palabras nuevas, describir problemas y aclarar malentendidos de forma amable y profesional." ] }, "learn-about-speculation-and-requests": { "title": "Conoce sobre la especulación y las peticiones", "intro": [ - "In this course, you will learn how to talk about things that should or could have happened in the past, and how to give suggestions or make polite requests. You'll also practice using expressions to guess what might have caused a problem and how to work together to solve it in a clear and respectful way." + "En este curso, aprenderás a hablar sobre situaciones que deberían o podrían haber ocurrido en el pasado, y a dar sugerencias o hacer peticiones educadas. También practicarás el uso de expresiones para adivinar qué pudo haber causado un problema y cómo colaborar para resolverlo de forma clara y respetuosa." ] }, "learn-about-adverbial-phrases": { "title": "Aprende sobre las frases adverbiales", "intro": [ - "In this course, you will learn how to use phrases that give more information about when, where, how often, or how much something happens. You'll also practice using these phrases to describe tasks, talk about plans, and explain results more clearly in your daily work." + ".En este curso, aprenderás a cómo usar frases que dán más información acerca de cuándo, dónde, cuán a menudo, o cuánto algo pasa. También, practicarás el uso de estas frases para describir tareas, hablar acerca de planes, y explicar resultados de tu día a día, más claramente." ] }, "learn-how-to-use-adjectives-in-conversations": { "title": "Aprende a utilizar adjetivos en las conversaciones", "intro": [ - "In this course, you will learn how to use adjectives to describe things clearly, compare options, and highlight important details in professional conversations. You'll also practice how to make your ideas stronger and more persuasive." + "En este curso, aprenderás a usar adjetivos para describir cosas con claridad, comparar opciones y destacar detalles importantes en conversaciones profesionales. También practicarás cómo hacer que tus ideas sean más sólidas y persuasivas." ] }, "learn-determiners-and-advanced-use-of-articles": { @@ -1710,7 +1710,7 @@ "learn-how-to-use-prepositions-according-to-context": { "title": "Aprende a utilizar las preposiciones según el contexto", "intro": [ - "In this course, you will learn how to use prepositions to describe time, place, and direction clearly in everyday work situations. You will also practice talking about schedules, giving directions, and explaining where people or things are located using natural and accurate language." + "En este curso, vas a aprender a usar preposiciones para describir tiempo, lugar y dirección de forma clara en las situaciones laborales del día a día. También vas a practicar hablando sobre horarios, dando direcciones y explicando dónde se encuentran las personas o las cosas usando un lenguaje natural y preciso." ] }, "learn-how-to-talk-about-numbers-with-a-coworker": { @@ -1750,7 +1750,7 @@ "Este curso ofrece un camino integral para convertirse en un desarrollador Full Stack certificado, cubriendo todas las tecnologías esenciales necesarias para crear aplicaciones web modernas y escalables de principio a fin.", "A través de una combinación de lecciones interactivas, ejercicios de codificación y proyectos del mundo real, dominarás el desarrollo frontend y backend. Trabajarás con HTML, CSS y JavaScript para crear interfaces de usuario responsivas, explorarás React y TypeScript para aplicaciones web avanzadas y aprenderás a administrar datos con bases de datos relacionales. Y en el backend, usarás Git, Npm, Node.js y Python para crear soluciones potentes del lado del servidor.", "Al finalizar este curso, tendrás las habilidades prácticas y la experiencia para desarrollar con confianza aplicaciones web completas, preparándote para una carrera exitosa como desarrollador Full Stack.", - "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." + "Esta certificación te tomará una cantidad considerable de tiempo y esfuerzo para completarla. Si comienzas ahora, podrías estar listo para iniciar el material restante y el examen final cuando lo lancemos en los próximos meses." ], "chapters": { "html": "HTML", @@ -1760,7 +1760,7 @@ "relational-databases": "Bases de datos relacionales", "backend-javascript": "JavaScript de back-end", "python": "Python", - "career": "Career" + "career": "Carrera" }, "modules": { "basic-html": "HTML básico", @@ -1777,58 +1777,58 @@ "css-colors": "Colores", "styling-forms": "Formas de estilo", "css-box-model": "El modelo de caja", - "css-flexbox": "Flexbox", - "css-typography": "Typography", - "css-and-accessibility": "Accessibility", - "attribute-selectors": "Attribute Selectors", - "css-positioning": "Positioning", - "responsive-design": "Responsive Design", + "css-flexbox": "Caja flexible", + "css-typography": "Tipografía", + "css-and-accessibility": "Accesibilidad", + "attribute-selectors": "Selector de atributos", + "css-positioning": "Posicionamiento", + "responsive-design": "Diseño responsivo", "css-variables": "Variables", - "css-grid": "Grid", - "css-animations": "Animations", + "css-grid": "Gría", + "css-animations": "Animaciones", "review-css": "CSS Review", - "exam-css": "CSS Exam", - "code-editors": "Code Editors", - "javascript-variables-and-strings": "Variables and Strings", - "javascript-booleans-and-numbers": "Booleans and Numbers", - "javascript-functions": "Functions", - "javascript-arrays": "Arrays", - "javascript-objects": "Objects", - "javascript-loops": "Loops", - "review-javascript-fundamentals": "JavaScript Fundamentals Review", - "higher-order-functions-and-callbacks": "Higher Order Functions and Callbacks", - "dom-manipulation-and-events": "DOM Manipulation and Events", - "js-a11y": "JavaScript and Accessibility", - "debugging-javascript": "Debugging", - "basic-regex": "Basic Regex", - "form-validation": "Form Validation", - "javascript-dates": "Dates", - "audio-and-video-events": "Audio and Video Events", - "maps-and-sets": "Maps and Sets", - "localstorage-and-crud-operations": "localStorage and CRUD Operations", - "classes-and-the-this-keyword": "Classes", - "recursion": "Recursion", - "functional-programming": "Functional Programming", - "asynchronous-javascript": "Asynchronous JavaScript", + "exam-css": "Examen de CSS", + "code-editors": "Editores de código", + "javascript-variables-and-strings": "Variables y cadenas", + "javascript-booleans-and-numbers": "Booleanos y números", + "javascript-functions": "Funciones", + "javascript-arrays": "Arreglos", + "javascript-objects": "Objetos", + "javascript-loops": "Bucles", + "review-javascript-fundamentals": "Repaso de los fundamentos de JavaScript", + "higher-order-functions-and-callbacks": "Funciones de orden superior y devoluciones de llamadas", + "dom-manipulation-and-events": "Manipulación y eventos del DOM", + "js-a11y": "JavaScript y Accesibilidad", + "debugging-javascript": "Depuración", + "basic-regex": "Regex básico", + "form-validation": "Validación de formulario", + "javascript-dates": "Datos", + "audio-and-video-events": "Eventos de audio y video", + "maps-and-sets": "Mapas y conjuntos", + "localstorage-and-crud-operations": "operaciones CRUD y de almacenamiento local", + "classes-and-the-this-keyword": "Clases", + "recursion": "Recursión", + "functional-programming": "Programación funcional", + "asynchronous-javascript": "JavaScript asincrónico", "review-javascript": "JavaScript Review", - "exam-javascript": "JavaScript Exam", - "react-fundamentals": "React Fundamentals", - "react-state-hooks-and-routing": "React State, Hooks, and Routing", - "performance": "Performance", - "testing": "Testing", - "css-libraries-and-frameworks": "CSS Libraries and Frameworks", + "exam-javascript": "Examen de JavaScript", + "react-fundamentals": "Fundamentos de React", + "react-state-hooks-and-routing": "React Estado, ganchos y enrutamiento", + "performance": "Actuación", + "testing": "Pruebas", + "css-libraries-and-frameworks": "Bibliotecas y Frameworks CSS", "data-visualization": "Data Visualization and D3", - "typescript-fundamentals": "TypeScript Fundamentals", - "review-front-end-libraries": "Front End Libraries Review", - "exam-front-end-libraries": "Front End Libraries Exam", + "typescript-fundamentals": "Fundamentos de TypeScript", + "review-front-end-libraries": "Revisión de bibliotecas Front End", + "exam-front-end-libraries": "Examen de bibliotecas Front End", "python-basics": "Python Basics", "python-loops-and-sequences": "Loops and Sequences", "python-dictionaries-and-sets": "Dictionaries and Sets", "python-error-handling": "Error Handling", - "python-classes-and-objects": "Classes and Objects", + "python-classes-and-objects": "Clases y objetos", "python-object-oriented-programming": "Object-Oriented Programming (OOP)", - "python-linear-data-structures": "Linear Data Structures", - "python-algorithms": "Algorithms", + "python-linear-data-structures": "Estructuras de datos lineales", + "python-algorithms": "Algoritmos", "python-graphs-and-trees": "Graphs and Trees", "python-dynamic-programming": "Dynamic Programming", "review-python": "Python Review", @@ -1836,11 +1836,11 @@ "bash-fundamentals": "Bash Fundamentals", "sql-and-postgresql": "SQL and PostgreSQL", "bash-scripting": "Bash Scripting", - "sql-and-bash": "SQL and Bash", + "sql-and-bash": "SQL y Bash", "git": "Git", "review-relational-databases": "Relational Databases Review", "exam-relational-databases": "Relational Databases Exam", - "introduction-to-nodejs": "Introduction to Node.js", + "introduction-to-nodejs": "Introducción a Node.js", "nodejs-core-libraries": "Node.js Core Libraries", "node-package-manager": "Node Package Manager", "http-and-the-web-standards-model": "HTTP and the Web Standards Model", @@ -1850,10 +1850,10 @@ "error-handling-in-express": "Error Handling in Express", "websockets": "WebSockets", "node-and-sql": "Node and SQL", - "security-and-privacy": "Security and Privacy", + "security-and-privacy": "Seguridad y Privacidad", "authentication": "Authentication", "tooling-and-deployment": "Tooling and Deployment", - "how-to-get-a-developer-job": "How to Get a Developer Job", + "how-to-get-a-developer-job": "Cómo obtener un trabajo como desarrollador", "capstone-project": "Capstone Project", "certified-full-stack-developer-exam": "Certified Full Stack Developer Exam" }, @@ -1865,7 +1865,7 @@ ] }, "typescript-fundamentals": { - "note": "Coming Fall 2025", + "note": "Próximamente en otoño de 2025", "intro": [ "In this module, you will be introduced to TypeScript, which is a superset of JavaScript that allows you to add static typing to your JavaScript code. You will build several workshops and labs that will give you practice in working with generics, type narrowing, TSX, and more. Then you will test your knowledge of TypeScript fundamentals with a short quiz." ] @@ -1901,13 +1901,13 @@ ] }, "python-dynamic-programming": { - "note": "Coming Winter 2025", + "note": "Próximamente en invierno de 2025", "intro": [ "In this module, you will learn about dynamic programming and practice these concepts by building a fibonacci sequence lab. Then you will take a short quiz to test your knowledge." ] }, "bash-fundamentals": { - "note": "Coming Winter 2025", + "note": "Próximamente en invierno de 2025", "intro": [ "In this module, you will learn about the command line and common Bash commands. Then you will practice your skills with a workshop and take a short quiz to test your knowledge." ] @@ -1919,79 +1919,79 @@ ] }, "bash-scripting": { - "note": "Coming Winter 2025", + "note": "Próximamente en invierno de 2025", "intro": [ "In this module, you will learn about bash scripting and practice those skills by building five programs. Then you will be able to test your knowledge of these concepts by taking a short quiz." ] }, "sql-and-bash": { - "note": "Coming Winter 2025", + "note": "Próximamente en invierno de 2025", "intro": [ "In this module, you will learn about normalization, SQL injection, and the N+1 problem. Then you will get to practice working with SQL and Bash by building several workshops and labs. Then you will be able to test your knowledge of these concepts by taking a short quiz." ] }, "git": { - "note": "Coming Winter 2025", + "note": "Próximamente en invierno de 2025", "intro": [ "In this module, you will learn how to use Git, Nano, and GitHub. Then you will get to practice working with Git by building several workshops and labs. You will be able to test your knowledge of these concepts by taking a short quiz." ] }, "introduction-to-nodejs": { - "note": "Coming Late 2026", + "note": "Próximamente a finales de 2026", "intro": [ "In this module, you will be introduced to Node.js, which is a JavaScript runtime environment that allows you to build backend applications using JavaScript. You will get to practice fundamental concepts by building a small workshop and test your knowledge with a short quiz." ] }, "nodejs-core-libraries": { - "note": "Coming Late 2026", + "note": "Próximamente a finales de 2026", "intro": [ "In this module, you will learn about common Node.js core libraries including the fs, os, path and more. Then you will get to practice what you have learned through workshops and labs and test your knowledge through a short quiz." ] }, "node-package-manager": { - "note": "Coming Late 2026", + "note": "Próximamente a finales de 2026", "intro": [ "In this module, you will be introduced to the Node Package Manager, which developers use to manage project dependencies and scripts. Then you will get to practice what you have learned through workshops and labs and test your knowledge with a short quiz." ] }, "http-and-the-web-standards-model": { - "note": "Coming Late 2026", + "note": "Próximamente a finales de 2026", "intro": [ "In this module, you will learn about HTTP (Hypertext Transfer Protocol) and other important concepts including the request-response model, common response codes, DNS, TCP/IP, and more. Then you will get to practice what you have learned through a build your own web server workshop and test your knowledge with a short quiz." ] }, "rest-api-and-web-services": { - "note": "Coming Late 2026", + "note": "Próximamente a finales de 2026", "intro": [ "In this module, you will learn about the REST API (Representational State Transfer Application Programming Interface) and how microservices work. Then you will take a short quiz to test your knowledge." ] }, "introduction-to-express": { - "note": "Coming Late 2026", + "note": "Próximamente a finales de 2026", "intro": [ "In this module, you will be introduced to Express.js, which is a framework used to build RESTful APIs. Then you will practice your skills through workshops and labs and test your knowledge with a short quiz." ] }, "express-middleware": { - "note": "Coming Late 2026", + "note": "Próximamente a finales de 2026", "intro": [ "In this module, you will learn about middleware in Express.js, which is used to handle requests and responses between the client and server. You will then practice your skills through a workshop and lab and test your knowledge with a short quiz." ] }, "error-handling-in-express": { - "note": "Coming Late 2026", + "note": "Próximamente a finales de 2026", "intro": [ "In this module, you will learn about how error handling, debugging, and health checks work in Express.js. You will then practice what you have learned in a lab and test your knowledge with a short quiz." ] }, "websockets": { - "note": "Coming Late 2026", + "note": "Próximamente a finales de 2026", "intro": [ "In this module, you will be introduced to websockets, which is a protocol used for real time communication with the client and server. You will then practice what you have learned in labs and workshops and test your knowledge with a short quiz." ] }, "node-and-sql": { - "note": "Coming Late 2026", + "note": "Próximamente a finales de 2026", "intro": [ "In this module, you will practice building applications with Node and SQL. Then you will take a short quiz to test your knowledge." ] @@ -2003,31 +2003,31 @@ ] }, "authentication": { - "note": "Coming Late 2026", + "note": "Próximamente a finales de 2026", "intro": [ "In this module, you will learn about how authentication works in web applications along with other important concepts including JWTs, CSRFs, Passport, Helmet, cryptography and encryption, and more. You will then practice what you have learned in labs and workshops and test your knowledge with a short quiz." ] }, "tooling-and-deployment": { - "note": "Coming Late 2026", + "note": "Próximamente a finales de 2026", "intro": [ "In this module, you will learn about common tools used in the industry for deploying your full stack applications. Then you will take a short quiz to test your knowledge." ] }, "how-to-get-a-developer-job": { - "note": "Coming Late 2026", + "note": "Próximamente a finales de 2026", "intro": [ "In this module, Quincy Larson (Founder and teacher of freeCodeCamp) will talk about strategies you can use to prepare for getting a developer job. Quincy will cover key subjects including résumés, portfolios, researching the market, preparing for technical interviews, and more." ] }, "capstone-project": { - "note": "Coming Late 2026", + "note": "Próximamente a finales de 2026", "intro": [ "This will be your opportunity to build out a full stack application encompassing what you have learned throughout this certification." ] }, "certified-full-stack-developer-exam": { - "note": "Coming Late 2026", + "note": "Próximamente a finales de 2026", "intro": [ "This will be a 90 question exam testing what you have learned throughout this certification." ] @@ -2037,7 +2037,7 @@ "workshop-curriculum-outline": { "title": "Build a Curriculum Outline", "intro": [ - "Welcome to freeCodeCamp!", + "¡Bienvenid@ a freeCodeCamp!", "This workshop will serve as your introduction to HTML and coding in general. You will learn about headings and paragraph elements." ] }, @@ -2069,20 +2069,20 @@ ] }, "workshop-cat-photo-app": { - "title": "Build a Cat Photo App", + "title": "Crea una aplicación para tomar fotografías de gatos", "intro": [ - "HTML stands for HyperText Markup Language and it represents the content and structure of a web page.", - "In this workshop, you will learn how to work with basic HTML elements such as headings, paragraphs, images, links, and lists." + "HTML significa lenguaje de marcado de hipertexto y representa el contenido y la estructura de una página web.", + "En este taller, aprenderá a trabajar con elementos HTML básicos como encabezados, párrafos, imágenes, enlaces y listas." ] }, "lab-recipe-page": { - "title": "Build a Recipe Page", + "title": "Crea una página de recetas", "intro": [ - "In this lab, you'll review HTML basics by creating a web page of your favorite recipe. You'll create an HTML boilerplate and work with headings, lists, images, and more." + "En este laboratorio, revisará los conceptos básicos de HTML creando una página web de su receta favorita. Creará un código HTML estándar y trabajará con encabezados, listas, imágenes y más." ] }, "lecture-html-fundamentals": { - "title": "HTML Fundamentals", + "title": "Fundamentos de HTML", "intro": [ "In these lessons, you will learn about HTML fundamentals like the div element, the id and class attributes, the HTML boilerplate, HTML entities, and more." ] @@ -2100,9 +2100,9 @@ ] }, "lab-travel-agency-page": { - "title": "Build a Travel Agency Page", + "title": "Crea una página de agencia de viajes", "intro": [ - "In this lab, you'll review working with HTML fundamentals by creating a web page for a travel agency. You'll work with images, the figure element, the figcaption element, the anchor element, and more." + "En estos videos de lecciones, aprenderá sobre los fundamentos de HTML, como el elemento div, los atributos id y class, el código HTML, las entidades HTML y más." ] }, "lecture-working-with-audio-and-video-elements": { @@ -2142,33 +2142,33 @@ ] }, "lab-video-compilation-page": { - "title": "Build a Video Compilation Page", + "title": "Crea una página de compilación de videos", "intro": [ - "In this lab, you'll create a video compilation web page. You'll practice working with the iframe element." + "En este laboratorio, creará una página web de compilación de videos. Practicará el trabajo con el elemento iframe." ] }, "lecture-working-with-links": { - "title": "Working with Links", + "title": "Trabajar con enlaces", "intro": [ "In these lessons, you will learn about links, the target attribute, different link states, absolute, and relative paths, and more." ] }, "review-basic-html": { - "title": "Basic HTML Review", + "title": "Revisión básica de HTML", "intro": [ - "Before you are quizzed on the HTML knowledge you have gained so far, you first need to review the concepts.", - "Open up this page to review the HTML boilerplate, audio and video elements, the different target attribute values and more." + "Antes de que le evalúen sobre los conocimientos de HTML que ha adquirido hasta ahora, primero debe repasar los conceptos.", + "Abra esta página para revisar el código HTML, los elementos audio y video, los diferentes valores del atributo target y más." ] }, "quiz-basic-html": { - "title": "Basic HTML Quiz", + "title": "Cuestionario básico de HTML", "intro": [ - "The following quiz will test your knowledge of the basic HTML concepts you have learned so far.", + "El siguiente cuestionario pondrá a prueba tus conocimientos de los conceptos básicos de HTML que has aprendido hasta ahora.", "If you're getting ready for the exam, there are several quiz sets available for practice. After completing a quiz, you can revisit this page to access a new set of questions." ] }, "lecture-importance-of-semantic-html": { - "title": "Importance of Semantic HTML", + "title": "Importancia del HTML semántico", "intro": [ "In these lessons, you will learn about semantic HTML and why you should care about it, semantic elements, how semantic HTML differs from presentational HTML, and more." ] @@ -2204,92 +2204,92 @@ ] }, "workshop-blog-page": { - "title": "Build a Cat Blog Page", + "title": "Crea una página de blog sobre gatos", "intro": [ - "In this workshop, you will build an HTML only blog page using semantic elements including the main, nav, article and footer elements." + "En este taller, creará una página de blog solo en HTML utilizando elementos semánticos, incluidos los elementos main, nav, article y footer." ] }, "lab-event-hub": { - "title": "Build an Event Hub", + "title": "Construya un centro de eventos", "intro": [ - "In this lab, you'll build an event hub and review semantic elements like header, nav, article, and more." + "En este laboratorio, creará un centro de eventos y revisará elementos semánticos como header, nav, article y más." ] }, "review-semantic-html": { - "title": "Semantic HTML Review", + "title": "Revisión de HTML semántico", "intro": [ - "Before you are quizzed on semantic HTML, you first need to review the concepts.", - "Open up this page to review the em, strong, blockquote, address and more semantic HTML elements." + "Antes de que te evaluen sobre HTML semántico, primero debes repasar los conceptos.", + "Abra esta página para revisar em, strong, blockquote, address y más elementos HTML semánticos." ] }, "quiz-semantic-html": { - "title": "Semantic HTML Quiz", + "title": "Cuestionario de HTML semántico", "intro": [ - "The following quiz will test your knowledge on semantic HTML concepts you have learned so far.", + "El siguiente cuestionario pondrá a prueba tus conocimientos sobre los conceptos semánticos de HTML que has aprendido hasta ahora.", "If you're getting ready for the exam, there are several quiz sets available for practice. After completing a quiz, you can revisit this page to access a new set of questions." ] }, "lecture-working-with-forms": { - "title": "Working with Forms", + "title": "Trabajar con formularios", "intro": [ "In these lessons, you will learn about forms, the role of labels, inputs and buttons in creating forms, client-side form validation, and form states." ] }, "workshop-hotel-feedback-form": { - "title": "Build a Hotel Feedback Form", + "title": "Cree un formulario de comentarios sobre el hotel", "intro": [ - "In this workshop, you will build a Hotel Feedback Form.", - "You will practice working with labels, inputs, fieldsets, legends, textareas and buttons." + "En este taller, creará un formulario de comentarios del hotel.", + "Practicarás el trabajo con etiquetas, entradas, conjuntos de campos, leyendas, áreas de texto y botones." ] }, "lab-survey-form": { - "title": "Build a Survey Form", + "title": "Crear un formulario de encuesta", "intro": [ - "In this lab, you'll review HTML forms by creating a survey form.", - "You'll practice working with the label element, the different input elements, the required attribute, and more. " + "En este laboratorio, revisará formularios HTML creando un formulario de encuesta.", + "Practicarás el trabajo con el elemento label, los diferentes elementos input, el atributo required y más. " ] }, "lecture-working-with-tables": { - "title": "Working with Tables", + "title": "Trabajar con tablas", "intro": [ "In these lessons, you will learn about HTML tables, how to create them, and when to use them." ] }, "workshop-final-exams-table": { - "title": "Build a Final Exams Table", + "title": "Construir una mesa de exámenes finales", "intro": [ - "In this workshop, you will practice working with HTML tables by building a table of final exams." + "En este taller practicarás el trabajo con tablas HTML construyendo una tabla de exámenes finales." ] }, "lab-book-catalog-table": { - "title": "Build a Book Catalog Table", + "title": "Construir una tabla de catálogo de libros", "intro": [ - "In this lab, you'll review HTML tables by building a book information table.", - "You'll practice the different table components like the thead, tbody, th, tr, and td elements." + "En este laboratorio, revisará las tablas HTML creando una tabla de información de libros.", + "Practicarás los diferentes componentes de la tabla, como los elementos thead, tbody, th, tr y td." ] }, "lecture-working-with-html-tools": { - "title": "Working with HTML Tools", + "title": "Trabajar con herramientas HTML", "intro": [ "In these lessons, you will learn about HTML tools and how they let you write better code. These tools include HTML validators, DOM Inspector, and the browser developer tools." ] }, "review-html-tables-and-forms": { - "title": "HTML Tables and Forms Review", + "title": "Revisión de tablas y formularios HTML", "intro": [ - "Before you are quizzed on HTML forms, tables and tools, you first need to review the concepts.", - "Open up this page to review the table, input, and button elements as well as commonly used tools like the HTML validator and more." + "Antes de que le pregunten sobre formularios, tablas y herramientas HTML, primero debe repasar los conceptos.", + "Abra esta página para revisar los elementos table, input y button, así como herramientas de uso común como el validador HTML y más." ] }, "quiz-html-tables-and-forms": { - "title": "HTML Tables and Forms Quiz", + "title": "Cuestionario sobre tablas y formularios HTML", "intro": [ - "The following quiz will test your knowledge of HTML tables, forms and commonly used HTML tools.", + "El siguiente cuestionario pondrá a prueba sus conocimientos sobre tablas HTML, formularios y herramientas HTML de uso común.", "If you're getting ready for the exam, there are several quiz sets available for practice. After completing a quiz, you can revisit this page to access a new set of questions." ] }, "lecture-importance-of-accessibility-and-good-html-structure": { - "title": "Importance of Accessibility and Good HTML Structure", + "title": "Importancia de la accesibilidad y una buena estructura HTML", "intro": [ "In these lessons, you will learn about accessibility and its importance, assistive tools for people with disabilities, HTML attributes that let you create inclusive websites, accessibility best practices, and much more." ] @@ -2331,9 +2331,9 @@ ] }, "lab-checkout-page": { - "title": "Build a Checkout Page", + "title": "Crear una página de pago", "intro": [ - "In this lab, you'll create an accessible checkout page.", + "En este laboratorio, creará una página de pago accesible.", "You'll practice concepts like alt attributes and ARIA roles." ] }, @@ -2345,31 +2345,31 @@ ] }, "lab-multimedia-player": { - "title": "Build a Multimedia Player", + "title": "Construir un reproductor multimedia", "intro": [ - "In this lab, you'll build a multimedia player.", + "En este laboratorio, construirás un reproductor multimedia.", "You will practice working with the audio and video elements, the controls attribute, and the aria-label attribute." ] }, "review-html-accessibility": { - "title": "HTML Accessibility Review", + "title": "Revisión de accesibilidad HTML", "intro": [ - "Before you are quizzed on HTML and accessibility, you first need to review the concepts.", - "Open up this page to review concepts including the aria-hidden, aria-describedby, tabindex attributes and more." + "Antes de que te examinen sobre HTML y accesibilidad, primero debes repasar los conceptos.", + "Abra esta página para revisar conceptos, incluidos los atributos aria-hidden, aria-describedby, tabindex y más." ] }, "quiz-html-accessibility": { - "title": "HTML Accessibility Quiz", + "title": "Cuestionario de accesibilidad HTML", "intro": [ - "The following quiz will test your knowledge on the accessibility concepts you have learned so far.", + "El siguiente cuestionario pondrá a prueba tus conocimientos sobre los conceptos de accesibilidad que has aprendido hasta ahora.", "If you're getting ready for the exam, there are several quiz sets available for practice. After completing a quiz, you can revisit this page to access a new set of questions." ] }, "review-html": { - "title": "HTML Review", + "title": "Revisión de HTML", "intro": [ - "Before you take the HTML prep exam, you first need to review the concepts taught in the previous modules.", - "Open up this page to review concepts around the basics of HTML elements, semantic HTML, tables, forms and accessibility." + "Antes de tomar el examen de preparación de HTML, primero debes revisar los conceptos enseñados en los módulos anteriores.", + "Abra esta página para revisar conceptos sobre los conceptos básicos de elementos HTML, HTML semántico, tablas, formularios y accesibilidad." ] }, "qpra": { @@ -2377,58 +2377,58 @@ "intro": [] }, "lecture-understanding-computer-internet-and-tooling-basics": { - "title": "Understanding Computer, Internet, and Tooling Basics", + "title": "Comprensión de los conceptos básicos de computadoras, Internet y herramientas", "intro": [ "In these lessons, you will learn about the computer, its different parts, internet service providers (ISPs), and the tools professional developers use." ] }, "lecture-working-with-file-systems": { - "title": "Working with File Systems", + "title": "Trabajar con sistemas de archivos", "intro": [ "In these lessons, you will learn how to work with file and folder systems on your computers. You will learn how to create, move, and delete files and folders, the best practices for naming and organizing files and folders, and more." ] }, "lecture-browsing-the-web-effectively": { - "title": "Browsing the Web Effectively", + "title": "Navegar por la Web de manera eficaz", "intro": [ "In these lessons, you will learn about what websites, search engine, and web browsers are, the different browsers available, and how to get the best out of a search engine." ] }, "review-computer-basics": { - "title": "Computer Basics Review", + "title": "Repaso de conceptos básicos de informática", "intro": [ - "Before you are quizzed on basic computer and internet concepts, you first need to review.", - "Open up this page to review concepts like RAM, Internet service providers, common web browsers, search engines and more." + "Antes de que le hagan una prueba sobre conceptos básicos de computadoras e Internet, primero debe repasar", + "Abra esta página para revisar conceptos como RAM, proveedores de servicios de Internet, navegadores web comunes, motores de búsqueda y más." ] }, "quiz-computer-basics": { - "title": "Computer Basics Quiz", + "title": "Cuestionario sobre conceptos básicos de informática", "intro": [ - "Test what you've learned in this quiz of basic computer knowledge." + "Pon a prueba lo que has aprendido en este cuestionario de conocimientos básicos de informática." ] }, "lecture-what-is-css": { - "title": "What Is CSS?", + "title": "Que es CSS", "intro": [ "The following lessons are all about CSS. You will learn what CSS is and its role on the web, a CSS rule and its anatomy, the three ways to write CSS and when to use each, inline and block elements, and many more." ] }, "workshop-cafe-menu": { - "title": "Design a Cafe Menu", + "title": "Diseñar un menú de una cafetería", "intro": [ - "CSS tells the browser how to display your webpage. You can use CSS to set the color, font, size, and other aspects of HTML elements.", - "In this workshop, you'll learn CSS by designing a menu page for a cafe webpage." + "CSS le dice al navegador cómo presentar tu página web. Puedes usar CSS para definir el color, fuente, tamaño, y otros aspectos de los elementos HTML.", + "En este taller, aprenderás CSS diseñando una página de un menú para una página web de una cafeteria." ] }, "lab-business-card": { - "title": "Design a Business Card", + "title": "Diseña una tarjeta de presentación", "intro": [ - "In this lab, you'll create a business card and style it using CSS.", - "You'll practice style properties like color, font-size, text-align, and more." + "En este laboratorio, creará una tarjeta de presentación y le dará estilo usando CSS.", + "Practicarás propiedades de estilo como color, font-size, text-align y más." ] }, "lecture-css-specificity-the-cascade-algorithm-and-inheritance": { - "title": "CSS Specificity, the Cascade Algorithm, and Inheritance", + "title": "Especificidad de CSS, algoritmo en cascada y herencia", "intro": [ "In these lessons, you will learn about CSS specificity, the common selectors and their specificities, the cascade algorithm, inheritance, and more." ] @@ -2436,188 +2436,192 @@ "review-basic-css": { "title": "CSS Fundamentals Review", "intro": [ - "Before you are quizzed on basic CSS concepts, you first need to review.", - "Open up this page to review concepts including margin, padding, CSS combinators, CSS specificity and more." + "Antes de que te examinen sobre conceptos básicos de CSS, primero debes repasar.", + "Abra esta página para revisar conceptos que incluyen margin, padding, combinadores CSS, especificidad CSS y más." ] }, "quiz-basic-css": { "title": "CSS Fundamentals Quiz", "intro": [ - "Test what you've learned in this quiz of basic CSS knowledge." + "Pon a prueba lo que has aprendido en este cuestionario de conocimientos básicos de CSS." ] }, "lecture-styling-lists-and-links": { - "title": "Styling Lists and Links", + "title": "Listas y enlaces de estilos", "intro": [ "In these lessons, you will learn the properties you need to know to effectively style lists and links, including link states like link, visited, hover, and active." ] }, "lab-stylized-to-do-list": { - "title": "Build a Stylized To-Do List", + "title": "Crea una lista de tareas estilizada", "intro": [ - "In this lab, you'll build a To-Do list and apply different styles to the links", - "You'll practice style properties like text-decoration, list-style-type and how to change styles on hover or click." + "En este laboratorio, creará una lista de tareas pendientes y aplicará diferentes estilos a los enlaces", + "Practicarás propiedades de estilo como text-decoration, list-style-type y cómo cambiar estilos al pasar el mouse o hacer clic." ] }, "lecture-working-with-backgrounds-and-borders": { - "title": "Working with Backgrounds and Borders", + "title": "Trabajar con fondos y bordes", "intro": [ "In these lessons, you will learn about the properties and values you need to know to style backgrounds and borders of elements, alongside the accessibility considerations for backgrounds." ] }, "lab-blog-post-card": { - "title": "Design a Blog Post Card", + "title": "Diseña una tarjeta para una publicación de blog", "intro": [ - "In this lab, you'll design a blog post card using HTML and CSS", - "You'll practice concepts like background-color, border-radius, margins, paddings, and more." + "En este laboratorio, diseñará una tarjeta de publicación de blog utilizando HTML y CSS", + "Practicarás conceptos como background-color, border-radius, márgenes, rellenos y más." ] }, "review-css-backgrounds-and-borders": { - "title": "Lists, Links, CSS Background and Borders Review", + "title": "Revisión de listas, enlaces, fondos CSS y bordes", "intro": [ - "Before you are quizzed on CSS backgrounds and borders, you first need to review.", - "Open up this page to review concepts including the background-image property, border property and more." + "Antes de que te pregunten sobre fondos y bordes CSS, primero debes repasar.", + "Abra esta página para revisar conceptos, incluida la propiedad background-image, la propiedad border y más." ] }, "quiz-css-backgrounds-and-borders": { - "title": "CSS Backgrounds and Borders Quiz", + "title": "Cuestionario sobre fondos y bordes CSS", "intro": [ - "Test what you've learned in this quiz of backgrounds and borders in CSS." + "Pon a prueba lo que has aprendido en este cuestionario sobre fondos y bordes en CSS." ] }, "lecture-user-interface-design-fundamentals": { - "title": "User Interface Design Fundamentals", + "title": "Fundamentos del diseño de la interfaz de usuario", "intro": [ "In these lessons, you will learn about the fundamentals of user interface (UI) design. You will learn about the terms you need to know to communicate with designers, visual hierarchy, scaling, alignment, whitespace, and much more." ] }, "lecture-user-centered-design": { - "title": "User-Centered Design", + "title": "Diseño centrado en el usuario", "intro": [ "In these lessons, you will learn about best practices for designing user-facing features like dark mode, breadcrumbs, modal dialogs, and much more. You will also learn how to conduct user research, user requirements and testing." ] }, "lecture-common-design-tools": { - "title": "Common Design Tools", + "title": "Herramientas de diseño comunes", "intro": [ "In these lessons, you will learn about the common design tools developers should know. You will also learn about design briefs and how developers work with them." ] }, "review-design-fundamentals": { - "title": "Design Fundamentals Review", + "title": "Revisión de los fundamentos del diseño", "intro": [ - "Before you are quizzed on the design fundamentals you have learned so far, you first need to review.", - "Open up this page to review concepts like user-centered design, scale, alignment, good visual hierarchy and more." + "Antes de que te cuestionen sobre los conceptos básicos de diseño que has aprendido hasta ahora, primero debes repasarlos.", + "Abra esta página para revisar conceptos como diseño centrado en el usuario, escala, alineación, buena jerarquía visual y más." ] }, "quiz-design-fundamentals": { - "title": "Design Fundamentals Quiz", + "title": "Cuestionario sobre los fundamentos del diseño", "intro": [ - "Test what you've learned in this quiz of UI design fundamentals." + "Pon a prueba lo que has aprendido en este cuestionario sobre los fundamentos del diseño de UI." ] }, "lecture-working-with-relative-and-absolute-units": { - "title": "Working with Relative and Absolute Units", + "title": "Trabajar con unidades relativas y absolutas", "intro": [ "In these lessons, you will learn about relative and absolute units, and how they both impact what you see in the browser." ] }, "lab-event-flyer-page": { - "title": "Build an Event Flyer Page", + "title": "Crea una página de volante de evento", "intro": [ - "In this lab, you'll create an event flyer page.", - "You will practice aligning elements using absolute and relative CSS." + "En este laboratorio, creará una página de volante de evento.", + "Practicarás la alineación de elementos usando CSS absoluto y relativo." ] }, "review-css-relative-and-absolute-units": { - "title": "CSS Relative and Absolute Units Review", + "title": "Revisión de unidades relativas y absolutas de CSS", "intro": [ - "Before you are quizzed on relative and absolute units, you first need to review.", - "Open up this page to review concepts like percentages, px, rem, em, and more." + "Antes de que te examinen sobre unidades relativas y absolutas, primero debes repasar.", + "Abra esta página para revisar conceptos como porcentajes, px, rem, em y más." ] }, "quiz-css-relative-and-absolute-units": { - "title": "CSS Relative and Absolute Units Quiz", + "title": "Cuestionario sobre unidades relativas y absolutas de CSS", "intro": [ - "Test what you've learned in this quiz of relative and absolute units in CSS." + "Pon a prueba lo que has aprendido en este cuestionario de unidades relativas y absolutas en CSS." ] }, "lecture-working-with-pseudo-classes-and-pseudo-elements-in-css": { - "title": "Working with Pseudo-Classes and Pseudo-Elements in CSS", + "title": "Trabajar con pseudoclases y pseudoelementos en CSS", "intro": [ "In these lessons, you will learn about pseudo-classes and pseudo-elements, alongside their examples and how they work." ] }, "workshop-greeting-card": { - "title": "Design a Greeting Card", + "title": "Diseña una tarjeta de felicitación", "intro": [ "In the previous lessons, you learned how to work with the different types of pseudo-classes.", - "In this workshop, you will have a chance to practice what you have learned by designing a greeting card." + "En este taller tendrás la oportunidad de practicar lo aprendido diseñando una tarjeta de felicitación." ] }, "lab-job-application-form": { - "title": "Build a Job Application Form", + "title": "Crear un formulario de solicitud de empleo", "intro": [ - "In this lab you'll build a job application form and style it using pseudo-classes.", - "You'll practice concepts like :hover, :active, :focus, and more." + "En este laboratorio, creará un formulario de solicitud de empleo y le dará estilo utilizando pseudoclases.", + "Practicarás conceptos como :hover, :active, :focus y más." ] }, "review-css-pseudo-classes": { - "title": "CSS Pseudo-classes Review", + "title": "Revisión de pseudoclases CSS", "intro": [ - "Before you're quizzed on CSS pseudo-classes and pseudo-elements, you should review what you've learned about them.", - "Open up this page to review concepts like the ::before and ::after pseudo-elements as well as the :hover, :active pseudo-classes and more." + "Antes de que te pregunten sobre las pseudoclases y pseudoelementos CSS, debes repasar lo que has aprendido sobre ellos.", + "Abra esta página para revisar conceptos como los pseudoelementos ::before y ::after, así como las pseudoclases :hover, :active y más." ] }, "quiz-css-pseudo-classes": { - "title": "CSS Pseudo-classes Quiz", - "intro": ["Test your knowledge of CSS pseudo-classes with this quiz."] + "title": "Cuestionario sobre pseudoclases CSS", + "intro": [ + "Pon a prueba tus conocimientos sobre las pseudoclases CSS con este cuestionario." + ] }, "lecture-working-with-colors-in-css": { - "title": "Working with Colors in CSS", + "title": "Trabajar con colores en CSS", "intro": [ "In these lessons, you will learn about linear and radial gradients, the color theory, different kinds of colors like named, RGB, Hex, and HSL colors. You will learn how these colors work, and which to use in specific cases." ] }, "workshop-colored-markers": { - "title": "Build a Set of Colored Markers", + "title": "Construye un conjunto de marcadores de colores", "intro": [ - "In this workshop, you'll build a set of colored markers. You'll practice different ways to set color values and how to pair colors with each other." + "En este taller, crearás un conjunto de marcadores de colores. Practicarás distintas formas de establecer valores de color y cómo combinar colores entre sí." ] }, "lab-colored-boxes": { - "title": "Design a Set of Colored Boxes", + "title": "Diseñar un conjunto de cajas de colores", "intro": [ - "In this lab, you'll create a color grid and practice adding background colors to the grid items using hex codes, RGB, and predefined color names." + "En este laboratorio, creará una cuadrícula de colores y practicará cómo agregar colores de fondo a los elementos de la cuadrícula usando códigos hexadecimales, RGB y nombres de colores predefinidos." ] }, "review-css-colors": { - "title": "CSS Colors Review", + "title": "Revisión de colores CSS", "intro": [ - "Before you're quizzed on CSS colors, you should review what you've learned about them.", - "Open up this page to review concepts like the rgb() function, hsl() function, hex codes, and more." + "Antes de que te pregunten sobre los colores CSS, debes repasar lo que has aprendido sobre ellos.", + "Abra esta página para revisar conceptos como la función rgb(), la función hsl(), los códigos hexadecimales y más." ] }, "quiz-css-colors": { - "title": "CSS Colors Quiz", - "intro": ["Test your knowledge of CSS colors with this quiz."] + "title": "Cuestionario sobre colores CSS", + "intro": [ + "Pon a prueba tus conocimientos sobre los colores CSS con este cuestionario." + ] }, "lecture-best-practices-for-styling-forms": { - "title": "Best Practices for Styling Forms", + "title": "Mejores prácticas para aplicar estilo a los formularios", "intro": [ "In these lessons, you will learn about the best practices for styling forms and issues you can encounter while styling special inputs like color and datetime-local." ] }, "workshop-registration-form": { - "title": "Design a Registration Form", + "title": "Diseñar un formulario de registro", "intro": [ - "In this workshop, you'll learn how to design HTML forms by designing a signup page. You'll learn how to control what types of data people can type into your form, and some new CSS tools for styling your page." + "En este taller, aprenderá a diseñar formularios HTML mediante el diseño de una página de registro. Aprenderá a controlar qué tipos de datos pueden ingresar las personas en su formulario y algunas herramientas CSS nuevas para diseñar su página." ] }, "lab-contact-form": { - "title": "Design a Contact Form", + "title": "Diseñar un formulario de contacto", "intro": [ - "In this lab, you'll design a contact form in HTML and style it using CSS." + "En este laboratorio, diseñará un formulario de contacto en HTML y le dará estilo usando CSS." ] }, "workshop-game-settings-panel": { @@ -2634,281 +2638,287 @@ ] }, "review-styling-forms": { - "title": "Styling Forms Review", + "title": "Revisión de formas de estilismo", "intro": [ - "Before you're quizzed on styling forms, you should review what you've learned.", - "Open up this page to review how to style form inputs, working with appearance: none and more." + "Antes de que te pregunten sobre cómo diseñar formularios, debes repasar lo que has aprendido.", + "Abra esta página para revisar cómo diseñar entradas de formulario, trabajar con appearance: none y más." ] }, "quiz-styling-forms": { - "title": "Styling Forms Quiz", + "title": "Cuestionario sobre formas de estilismo", "intro": [ - "In this quiz, you will test your knowledge of how to style forms." + "En este cuestionario, usted pondrá a prueba su conocimiento de cómo estilizar formularios." ] }, "lecture-working-with-css-transforms-overflow-and-filters": { - "title": "Working with CSS Transforms, Overflow, and Filters", + "title": "Trabajando con transformaciones CSS, Overflow, y Filtros", "intro": [ "In these lessons, you will learn about working with CSS transforms, overflow, and filters. You will also learn about the box model and how it works." ] }, "workshop-rothko-painting": { - "title": "Design a Rothko Painting", + "title": "Diseña un cuadro de Rothko", "intro": [ - "Every HTML element is its own box – with its own spacing and a border. This is called the Box Model.", - "In this workshop, you'll use CSS and the Box Model to create your own Rothko-style rectangular art pieces." + "Cada elemento HTML es su propio cuadro, con su propio espacio y borde. Esto se denomina modelo de cuadro.", + "En este taller, utilizarás CSS y el modelo de caja para crear tus propias piezas de arte rectangulares estilo Rothko." ] }, "lab-confidential-email-page": { - "title": "Build a Confidential Email Page", + "title": "Cree una página de correo electrónico confidencial", "intro": [ - "In this lab, you'll create a web page using HTML and mask the content using CSS properties." + "En este laboratorio, creará una página web utilizando HTML y enmascarará el contenido mediante propiedades CSS." ] }, "review-css-layout-and-effects": { - "title": "CSS Layouts and Effects Review", + "title": "Revisión de efectos y diseños CSS", "intro": [ - "Before you are quizzed on CSS Layouts and Effects, you first need to review.", - "Open up this page to review concepts like the transform property, the box model, the overflow property and more." + "Antes de que te examinen sobre diseños y efectos CSS, primero debes repasar.", + "Abra esta página para revisar conceptos como la propiedad transform, el modelo de caja, la propiedad overflow y más." ] }, "quiz-css-layout-and-effects": { - "title": "CSS Layout and Effects Quiz", + "title": "Cuestionario sobre efectos y diseño CSS", "intro": [ - "In this quiz, you will test your knowledge of the box model, transforms, filters, and overflow in CSS." + "En este cuestionario, pondrá a prueba sus conocimientos sobre el modelo de caja, las transformaciones, los filtros y el desbordamiento en CSS." ] }, "lecture-working-with-css-flexbox": { - "title": "Working with CSS Flexbox", + "title": "Trabajar con CSS Flexbox", "intro": [ "In these lessons, you will learn how CSS flexbox works, its properties, and when you should use it." ] }, "workshop-flexbox-photo-gallery": { - "title": "Build a Flexbox Photo Gallery", + "title": "Crea una galería de fotos de Flexbox", "intro": [ - "In this workshop, you'll use Flexbox to build a responsive photo gallery webpage." + "En este taller, utilizará Flexbox para crear una página web de galería de fotos responsiva." ] }, "lab-page-of-playing-cards": { - "title": "Build a Page of Playing Cards", + "title": "Crea una página de naipes", "intro": [ - "In this lab, you'll use flexbox to create a webpage of playing cards.", - "You'll practice aligning elements using flexbox properties like flex-direction, justify-content, align-self, and more." + "En este laboratorio, utilizará flexbox para crear una página web de naipes.", + "Practicarás la alineación de elementos usando propiedades de flexbox como flex-direction, justify-content, align-self y más." ] }, "review-css-flexbox": { - "title": "CSS Flexbox Review", + "title": "Reseña de CSS Flexbox", "intro": [ - "Before you're quizzed on CSS flexbox, you should review what you've learned.", - "Open up this page to review concepts like the flex-direction, justify-content, align-items, flex-wrap properties, and more." + "Antes de que te examinen sobre CSS flexbox, debes repasar lo que has aprendido.", + "Abra esta página para revisar conceptos como las propiedades flex-direction, justify-content, align-items, flex-wrap y más." ] }, "quiz-css-flexbox": { - "title": "CSS Flexbox Quiz", - "intro": ["Test what you've learned on CSS flexbox with this quiz."] + "title": "Cuestionario sobre CSS Flexbox", + "intro": [ + "Pon a prueba lo que has aprendido sobre CSS flexbox con este cuestionario." + ] }, "lecture-working-with-css-fonts": { - "title": "Working with CSS Fonts", + "title": "Trabajar con fuentes CSS", "intro": [ "In these lessons, you will learn about typography and its best practices, fonts, and the text-shadow property." ] }, "workshop-nutritional-label": { - "title": "Build a Nutritional Label", + "title": "Construir una etiqueta nutricional", "intro": [ - "Typography is the art of styling your text to be easily readable and suit its purpose.", - "In this workshop, you'll use typography to build a nutrition label webpage. You'll practice how to style text, adjust line height, and position your text using CSS." + "La tipografía es el arte de diseñar un texto para que sea fácilmente legible y se adapte a su propósito.", + "En este taller, utilizarás tipografía para crear una página web con etiquetas nutricionales. Practicarás cómo aplicar estilo al texto, ajustar la altura de las líneas y posicionar el texto con CSS." ] }, "lab-newspaper-article": { - "title": "Build a Newspaper Article", + "title": "Crear un artículo de periódico", "intro": [ - "In this lab, you'll build a newspaper article page using HTML and CSS.", - "You'll style the fonts using properties like font-family, font-size, font-weight, and more." + "En este laboratorio, creará una página de artículo de periódico utilizando HTML y CSS.", + "Diseñarás las fuentes usando propiedades como font-family, font-size, font-weight y más." ] }, "review-css-typography": { - "title": "CSS Typography Review", + "title": "Revisión de tipografía CSS", "intro": [ - "Before you're quizzed on the fundamentals of typography, you should review what you've learned.", - "Open up this page to review concepts like web safe fonts, the font-family property and more." + "Antes de que te pregunten sobre los fundamentos de la tipografía, debes repasar lo que has aprendido.", + "Abra esta página para revisar conceptos como fuentes web seguras, la propiedad font-family y más" ] }, "quiz-css-typography": { - "title": "CSS Typography Quiz", - "intro": ["Test your knowledge of typography with this quiz."] + "title": "Cuestionario de tipografía CSS", + "intro": ["Pon a prueba tus conocimientos de tipografía con este test"] }, "lecture-best-practices-for-accessibility-and-css": { - "title": "Best Practices for Accessibility and CSS", + "title": "Mejores prácticas para la accesibilidad y CSS", "intro": [ "In these lessons, you will learn about best practices for accessibility in CSS, and the tools for checking good color contrast on websites." ] }, "workshop-accessibility-quiz": { - "title": "Build a Quiz Webpage", + "title": "Crear una página web de cuestionario", "intro": [ - "Accessibility is the process of making your webpages usable for everyone, including people with disabilities.", - "In this workshop, you'll build a quiz webpage. You'll learn accessibility tools such as keyboard shortcuts, ARIA attributes, and design best practices." + "La accesibilidad es el proceso de hacer que sus páginas web sean utilizables para todos, incluidas las personas con discapacidades.", + "En este taller, crearás una página web de cuestionario. Aprenderás a usar herramientas de accesibilidad, como atajos de teclado, atributos ARIA y prácticas recomendadas de diseño." ] }, "lab-tribute-page": { - "title": "Build a Tribute Page", + "title": "Crea una página de homenaje", "intro": [ - "In this lab, you'll build a tribute page for a subject of your choosing, fictional or real." + "En este laboratorio, crearás una página de homenaje a un tema de tu elección, ficticio o real." ] }, "review-css-accessibility": { - "title": "CSS Accessibility Review", + "title": "Revisión de accesibilidad CSS", "intro": [ - "Before you're quizzed on CSS and accessibility, you should review what you've learned.", - "Open up this page to review concepts like color contrast tools and accessibility best practices." + "Antes de que te examinen sobre CSS y accesibilidad, debes repasar lo que has aprendido.", + "Abra esta página para revisar conceptos como herramientas de contraste de color y mejores prácticas de accesibilidad." ] }, "quiz-css-accessibility": { - "title": "CSS Accessibility Quiz", + "title": "Cuestionario de accesibilidad CSS", "intro": [ - "In this quiz, you'll test what you've learned about making your webpages accessible with CSS." + "En este cuestionario, pondrás a prueba lo que has aprendido sobre cómo hacer que tus páginas web sean accesibles con CSS." ] }, "lecture-understanding-how-to-work-with-floats-and-positioning-in-css": { - "title": "Understanding How to Work with Floats and Positioning in CSS", + "title": "Cómo trabajar con flotantes y posicionamiento en CSS", "intro": [ "In these lessons, you will learn how to use CSS positioning and floats. You will learn about absolute, relative, fixed, and sticky positioning. You will also use the z-index property." ] }, "workshop-cat-painting": { - "title": "Build a Cat Painting", + "title": "Construye un cuadro de gato", "intro": [ - "Mastering CSS positioning is essential for creating visually appealing and responsive web layouts.", - "In this workshop, you will build a cat painting. You'll learn about how to work with absolute positioning, the z-index property, and the transform property." + "Dominar el posicionamiento CSS es esencial para crear diseños web visualmente atractivos y responsivos.", + "En este taller, crearás una pintura de un gato. Aprenderás a trabajar con posicionamiento absoluto, la propiedad z-index y la propiedad transform." ] }, "lab-house-painting": { - "title": "Build a House Painting", + "title": "Construir una casa pintando", "intro": [ - "In this lab, you'll build a house painting using CSS.", - "You'll design individual elements of the house and position them using CSS properties like position, top, left, and more." + "En este laboratorio, crearás una pintura de casa usando CSS.", + "Diseñarás elementos individuales de la casa y los posicionarás usando propiedades CSS como position, top, left y más." ] }, "review-css-positioning": { - "title": "CSS Positioning Review", + "title": "Revisión del posicionamiento CSS", "intro": [ - "Before you're quizzed on the fundamentals of CSS positioning, you should review what you've learned.", - "Open up this page to review concepts like floats, relative positioning, absolute positioning and more." + "Antes de que te pregunten sobre los conceptos básicos del posicionamiento CSS, debes repasar lo que has aprendido.", + "Abra esta página para revisar conceptos como flotadores, posicionamiento relativo, posicionamiento absoluto y más." ] }, "quiz-css-positioning": { - "title": "CSS Positioning Quiz", - "intro": ["Test your knowledge of CSS positioning with this quiz."] + "title": "Cuestionario de posicionamiento CSS", + "intro": [ + "Pon a prueba tus conocimientos sobre posicionamiento CSS con este cuestionario." + ] }, "lecture-working-with-attribute-selectors": { - "title": "Working with Attribute Selectors", + "title": "Trabajar con selectores de atributos", "intro": [ "In these lessons, you will learn about attribute selectors and how to use them to target elements like links and lists." ] }, "workshop-balance-sheet": { - "title": "Build a Balance Sheet", + "title": "Construir un balance general", "intro": [ - "In this workshop, you'll build a balance sheet using pseudo selectors. You'll learn how to change the style of an element when you hover over it with your mouse, and trigger other events on your webpage." + "En este taller, crearás un balance general utilizando pseudoselectores. Aprenderás a cambiar el estilo de un elemento cuando pasas el mouse sobre él y a activar otros eventos en tu página web." ] }, "lab-book-inventory-app": { - "title": "Build a Book Inventory App", + "title": "Cree una aplicación de inventario de libros", "intro": [ - "In this lab, you'll create a book inventory app.", - "You'll practice CSS attribute selectors like [attribute], [attribute=value], [attribute~=value], and more." + "En este laboratorio, creará una aplicación de inventario de libros.", + "Practicarás selectores de atributos CSS como [attribute], [attribute=value], [attribute~=value] y más." ] }, "review-css-attribute-selectors": { - "title": "CSS Attribute Selectors Review", + "title": "Revisión de los selectores de atributos CSS", "intro": [ - "Before you're quizzed on the fundamentals of CSS attribute selectors, you should review what you've learned about them.", - "Open up this page to review concepts like how to work with different attribute selectors that target links with the href and title attributes." + "Antes de que te pregunten sobre los conceptos básicos de los selectores de atributos CSS, debes repasar lo que has aprendido sobre ellos.", + "Abra esta página para revisar conceptos como cómo trabajar con diferentes selectores de atributos que apuntan a enlaces con los atributos href y title." ] }, "quiz-css-attribute-selectors": { - "title": "CSS Attribute Selectors Quiz", + "title": "Cuestionario sobre selectores de atributos CSS", "intro": [ - "Test your knowledge of CSS attribute selectors with this quiz." + "Pon a prueba tus conocimientos sobre los selectores de atributos CSS con este cuestionario." ] }, "lecture-best-practices-for-responsive-web-design": { - "title": "Best Practices for Responsive Web Design", + "title": "Mejores prácticas para el diseño web responsivo", "intro": [ "In these lessons, you will learn about the best practices for responsive web design, the roles concepts like grid, flexbox, media queries, and media breakpoints play in responsive design, and more." ] }, "workshop-piano": { - "title": "Design a Piano", + "title": "Diseña un Piano", "intro": [ - "Responsive Design tells your webpage how it should look on different-sized screens.", + "El diseño responsivo le dice a su página web cómo debe verse en pantallas de diferentes tamaños.", "In this workshop, you'll use CSS and responsive design to code a piano. You'll also practice media queries and pseudo selectors." ] }, "lab-technical-documentation-page": { - "title": "Build a Technical Documentation Page", + "title": "Crear una página de documentación técnica", "intro": [ - "In this lab, you'll build a technical documentation page to serve as instruction or reference for a topic.", - "You'll also practice media queries to create a responsive design." + "En este laboratorio, creará una página de documentación técnica que sirva como instrucción o referencia para un tema.", + "También practicarás consultas de medios para crear un diseño responsivo." ] }, "review-responsive-web-design": { - "title": "Responsive Web Design Review", + "title": "Reseña de diseño web responsivo", "intro": [ - "Before you're quizzed on the fundamentals of responsive design, you should review what you've learned.", - "Open up this page to review concepts like media queries, media breakpoints and mobile first approach design." + "Antes de que te pregunten sobre los conceptos básicos del diseño responsivo, debes repasar lo que has aprendido.", + "Abra esta página para revisar conceptos como consultas de medios, puntos de interrupción de medios y diseño con enfoque móvil primero." ] }, "quiz-responsive-web-design": { - "title": "Responsive Web Design Quiz", + "title": "Cuestionario sobre diseño web responsivo", "intro": [ - "Test what you've learned about making your webpages responsive with this quiz." + "Pon a prueba lo que has aprendido sobre cómo hacer que tus páginas web sean responsivas con este cuestionario." ] }, "lecture-working-with-css-variables": { - "title": "Working with CSS Variables", + "title": "Trabajar con variables CSS", "intro": [ "In these lessons, you will learn how to define and use custom properties (also known as CSS variables). You will also learn about the @property rule and how it works." ] }, "workshop-city-skyline": { - "title": "Build a City Skyline", + "title": "Construye un horizonte de ciudad", "intro": [ - "CSS variables help you organize your styles and reuse them.", - "In this workshop, you'll build a city skyline. You'll practice how to configure CSS variables so you can reuse them whenever you want." + "Las variables CSS te ayudan a organizar tus estilos y reutilizarlos.", + "En este taller, crearás el perfil de una ciudad. Practicarás cómo configurar variables CSS para poder reutilizarlas cuando quieras." ] }, "lab-availability-table": { - "title": "Build an Availability Table", + "title": "Crear una tabla de disponibilidad", "intro": [ - "For this lab, you'll create an availability table that shows the availability of people for a meeting.", - "You'll practice using CSS variables to store and reuse colors, fonts, and other styles." + "Para este laboratorio, creará una tabla de disponibilidad que muestre la disponibilidad de las personas para una reunión.", + "Practicarás el uso de variables CSS para almacenar y reutilizar colores, fuentes y otros estilos." ] }, "review-css-variables": { - "title": "CSS Variables Review", + "title": "Revisión de variables CSS", "intro": [ - "Before you're quizzed on the fundamentals of CSS variables, you should review what you've learned.", - "Open up this page to review how to work with CSS custom properties (CSS variables) and the @property rule." + "Antes de que te pregunten sobre los conceptos básicos de las variables CSS, debes repasar lo que has aprendido.", + "Abra esta página para revisar cómo trabajar con propiedades personalizadas CSS (variables CSS) y la regla @property." ] }, "quiz-css-variables": { - "title": "CSS Variables Quiz", - "intro": ["Test your knowledge of CSS variables with this quiz."] + "title": "Cuestionario sobre variables CSS", + "intro": [ + "Pon a prueba tus conocimientos sobre las variables CSS con este cuestionario." + ] }, "lecture-working-with-css-grid": { - "title": "Working with CSS Grid", + "title": "Trabajar con CSS Grid", "intro": [ "In these lessons, you will learn about CSS grid, its several properties and how to use them, and how CSS grid differs from flexbox." ] }, "workshop-magazine": { - "title": "Build a Magazine", + "title": "Construir una revista", "intro": [ - "CSS Grid gives you control over the rows and columns of your webpage design.", - "In this workshop, you'll build a magazine article. You'll practice how to use CSS Grid, including concepts like grid rows and grid columns." + "CSS Grid le brinda control sobre las filas y columnas del diseño de su página web.", + "En este taller, crearás un artículo para una revista. Practicarás cómo usar CSS Grid, incluidos conceptos como filas y columnas de cuadrícula." ] }, "lab-newspaper-layout": { @@ -2918,87 +2928,91 @@ ] }, "lecture-debugging-css": { - "title": "Debugging CSS", + "title": "Depuración de CSS", "intro": [ "In this lesson, you'll learn how to debug CSS using your browser's developer tools and CSS validators." ] }, "lab-product-landing-page": { - "title": "Build a Product Landing Page", + "title": "Cree una página de destino del producto", "intro": [ - "In this project, you'll build a product landing page to market a product of your choice." + "En este proyecto, creará una página de destino de producto para comercializar un producto de su elección." ] }, "review-css-grid": { - "title": "CSS Grid Review", + "title": "Revisión de CSS Grid", "intro": [ - "Before you're quizzed on the fundamentals of CSS Grid, you should review what you've learned.", - "Open up this page to review how to work with the different CSS Grid properties like grid-template-columns, grid-gap and more." + "Antes de que te pregunten sobre los conceptos básicos de CSS Grid, debes repasar lo que has aprendido.", + "Abra esta página para revisar cómo trabajar con las diferentes propiedades de CSS Grid como grid-template-columns, grid-gap y más." ] }, "quiz-css-grid": { - "title": "CSS Grid Quiz", - "intro": ["Test your knowledge of CSS Grid with this quiz."] + "title": "Cuestionario sobre Grid CSS", + "intro": [ + "Pon a prueba tus conocimientos sobre CSS Grid con este cuestionario." + ] }, "lecture-animations-and-accessibility": { - "title": "Animations and Accessibility", + "title": "Animaciones y accesibilidad", "intro": [ "In these lessons, you will learn about CSS animations and their accessibility concerns. You will also learn how prefers-reduced-motion can help address those accessibility concerns." ] }, "workshop-ferris-wheel": { - "title": "Build an Animated Ferris Wheel", + "title": "Construye una noria animada", "intro": [ - "You can use CSS animation to draw attention to specific sections of your webpage and make it more engaging.", - "In this workshop, you'll build a Ferris wheel. You'll practice how to use CSS to animate elements, transform them, and adjust their speed." + "Puede utilizar la animación CSS para llamar la atención sobre secciones específicas de su página web y hacerla más atractiva.", + "En este taller, construirás una rueda de la fortuna. Practicarás cómo usar CSS para animar elementos, transformarlos y ajustar su velocidad." ] }, "lab-moon-orbit": { - "title": "Build a Moon Orbit", + "title": "Construir una órbita lunar", "intro": [ - "In this lab, you'll create an animation of the moon orbiting the earth.", - "You'll practice animation properties like animation-name, animation-duration, animation-timing-function, and more." + "En este laboratorio, crearás una animación de la luna orbitando la Tierra.", + "Practicarás propiedades de animación como animation-name, animation-duration, animation-timing-function y más." ] }, "workshop-flappy-penguin": { - "title": "Build a Flappy Penguin", + "title": "Construye un pingüino Flappy", "intro": [ - "You can transform HTML elements to create appealing designs that draw your reader's eye. You can use transforms to rotate elements, scale them, and more.", - "In this workshop, you'll build a penguin. You'll use CSS transforms to position and resize the parts of your penguin, create a background, and animate your work." + "Puedes transformar elementos HTML para crear diseños atractivos que llamen la atención del lector. Puedes usar transformaciones para rotar elementos, escalarlos y más.", + "En este taller, crearás un pingüino. Utilizarás transformaciones CSS para posicionar y cambiar el tamaño de las partes de tu pingüino, crear un fondo y animar tu trabajo." ] }, "lab-personal-portfolio": { - "title": "Build a Personal Portfolio", + "title": "Construye un portafolio personal", "intro": [ - "In this project, you'll build your own personal portfolio page." + "En este proyecto, crearás tu propia página de portafolio personal." ] }, "review-css-animations": { - "title": "CSS Animations Review", + "title": "Revisión de animaciones CSS", "intro": [ - "Before you're quizzed on working with CSS animations, you should review what you've learned about them.", - "Open up this page to review concepts including prefers-reduced-motion, the @keyframes rule and more." + "Antes de que te pregunten cómo trabajar con animaciones CSS, debes repasar lo que has aprendido sobre ellas.", + "Abra esta página para revisar conceptos que incluyen prefers-reduced-motion, la regla @keyframes y más." ] }, "quiz-css-animations": { - "title": "CSS Animations Quiz", - "intro": ["Test your knowledge of CSS animations with this quiz."] + "title": "Cuestionario sobre animaciones CSS", + "intro": [ + "Pon a prueba tus conocimientos sobre animaciones CSS con este cuestionario." + ] }, "review-css": { - "title": "CSS Review", + "title": "Revisión de CSS", "intro": [ - "Before you take the CSS prep exam, you first need to review the concepts taught in the previous modules.", - "Open up this page to review concepts around the basics of CSS, responsive web design, animations, accessibility and more." + "Antes de tomar el examen de preparación de CSS, primero debes revisar los conceptos enseñados en los módulos anteriores.", + "Abra esta página para revisar conceptos sobre los conceptos básicos de CSS, diseño web responsivo, animaciones, accesibilidad y más." ] }, "lecture-working-with-code-editors-and-ides": { - "title": "Working with Code Editors and IDEs", + "title": "Trabajar con editores de código e IDE", "intro": [ "In these lessons, you will learn how to work with code editors and IDEs. You will learn various concepts about the most popular code editor, VS Code such as its installation, how to create a project in it, keyboard shortcuts, and extensions." ] }, "lecture-introduction-to-javascript": { - "title": "Introduction to JavaScript", + "title": "Introducción a JavaScript", "intro": [ "In these lessons, you will learn the fundamentals of JavaScript. Topics covered include, but are not limited to, variables, data types, how JavaScript interacts with HTML and CSS, and much more." ] @@ -3016,54 +3030,54 @@ ] }, "workshop-greeting-bot": { - "title": "Build a Greeting Bot", + "title": "Construye un robot de saludo", "intro": [ - "In this workshop, you will learn JavaScript fundamentals by building a greeting bot.", - "You will learn about variables, let, const, console.log and basic string usage." + "En este taller, aprenderá los fundamentos de JavaScript mediante la creación de un bot de saludo.", + "Aprenderá sobre variables, let, const, console.log y el uso básico de cadenas." ] }, "lab-javascript-trivia-bot": { - "title": "Build a JavaScript Trivia Bot", + "title": "Crea un bot de trivia con JavaScript", "intro": [ - "In this lab, you'll practice working with JavaScript variables and strings by building a trivia bot." + "En este laboratorio, practicarás el trabajo con variables y cadenas de JavaScript mediante la creación de un bot de trivia." ] }, "lab-sentence-maker": { - "title": "Build a Sentence Maker", + "title": "Construye un generador de oraciones", "intro": [ - "In this lab, you will continue practicing with strings and concatenation by creating and customizing various stories." + "En este laboratorio, seguirá practicando con cadenas y concatenaciones creando y personalizando varias historias." ] }, "lecture-working-with-data-types": { - "title": "Working with Data Types", + "title": "Trabajar con tipos de datos", "intro": [ "In the following lessons, you will learn how to work with data types in JavaScript. You will also learn how dynamic typing differs from static typing, the typeof operator, and the typeof null bug." ] }, "review-javascript-variables-and-data-types": { - "title": "JavaScript Variables and Data Types Review", + "title": "Revisión de variables y tipos de datos de JavaScript", "intro": [ - "Before you are quizzed on JavaScript variables and data types you first need to review the concepts.", - "Open up this page to review variables, data types, logging and commenting." + "Antes de que le pregunten sobre las variables y los tipos de datos de JavaScript, primero debe repasar los conceptos.", + "Abra esta página para revisar variables, tipos de datos, registros y comentarios." ] }, "quiz-javascript-variables-and-data-types": { - "title": "JavaScript Variables and Data Types Quiz", + "title": "Cuestionario sobre variables y tipos de datos en JavaScript", "intro": [ - "Test your knowledge of JavaScript variables and data types with this quiz." + "Pon a prueba tus conocimientos sobre las variables y los tipos de datos de JavaScript con este cuestionario." ] }, "lecture-working-with-strings-in-javascript": { - "title": "Working with Strings in JavaScript", + "title": "Trabajar con cadenas en JavaScript", "intro": [ "In these lessons, you will learn how to work with strings in JavaScript. You will learn how to access characters from a string, how to use template literals and interpolation, how to create a new line in strings, and much more." ] }, "workshop-teacher-chatbot": { - "title": "Build a Teacher Chatbot", + "title": "Construye un chatbot para profesores", "intro": [ - "In this workshop, you will continue to learn more about JavaScript strings by building a chatbot.", - "You will learn how to work with template literals, and the indexOf method." + "En este taller, continuará aprendiendo más sobre las cadenas de JavaScript mediante la creación de un chatbot.", + "Aprenderá a trabajar con literales de plantilla y el método indexOf." ] }, "lecture-working-with-string-character-methods": { @@ -3109,15 +3123,17 @@ ] }, "review-javascript-strings": { - "title": "JavaScript Strings Review", + "title": "Revisión de cadenas de JavaScript", "intro": [ - "Before you are quizzed on working with JavaScript strings, you first need to review.", - "Open up this page to review how to work with template literals, the slice method, the includes method, the trim method and more." + "Antes de que te pregunten cómo trabajar con cadenas de JavaScript, primero debes repasar.", + "Abra esta página para revisar cómo trabajar con literales de plantilla, el método slice, el método includes, el método trim y más." ] }, "quiz-javascript-strings": { - "title": "JavaScript Strings Quiz", - "intro": ["Test your knowledge of JavaScript strings with this quiz."] + "title": "Cuestionario sobre cadenas de JavaScript", + "intro": [ + "Pon a prueba tus conocimientos sobre cadenas de JavaScript con este cuestionario." + ] }, "lecture-working-with-numbers-and-arithmetic-operators": { "title": "Working with Numbers and Arithmetic Operators", @@ -3164,66 +3180,66 @@ ] }, "workshop-mathbot": { - "title": "Build a Mathbot", + "title": "Construye un Mathbot", "intro": [ - "In this workshop, you will review how to work with the different Math object methods by building a Mathbot." + "En este taller, revisará cómo trabajar con los diferentes métodos de objetos matemáticos mediante la construcción de un Mathbot." ] }, "lab-fortune-teller": { - "title": "Build a Fortune Teller", + "title": "Construir un adivino", "intro": [ - "In this lab, you'll build a fortune teller by randomly selecting a fortune from the available fortunes.", - "You'll practice how to work with the Math.random() method and the Math.floor() method to generate random numbers." + "En este laboratorio, construirás un adivino seleccionando al azar una fortuna entre las fortunas disponibles.", + "Practicarás cómo trabajar con el método Math.random() y el método Math.floor() para generar números aleatorios." ] }, "lecture-working-with-numbers-and-common-number-methods": { - "title": "Working with Numbers and Common Number Methods", + "title": "Trabajar con números y métodos de números comunes", "intro": [ "In these lessons, you will learn about numbers and common number methods. These include isNaN(), parseInt(), parseFloat(), and toFixed()." ] }, "review-javascript-math": { - "title": "JavaScript Math Review", + "title": "Revisión de matemáticas de JavaScript", "intro": [ - "Before you're quizzed on working with the Math object, you should review what you've learned.", - "Open up this page to review how to work with the Math.random() method, the Math.floor() method and more." + "Antes de que te pregunten cómo trabajar con el objeto Math, debes repasar lo que has aprendido.", + "Abra esta página para revisar cómo trabajar con el método Math.random(), el método Math.floor() y más." ] }, "quiz-javascript-math": { - "title": "JavaScript Math Quiz", + "title": "Cuestionario de matemáticas sobre JavaScript", "intro": [ - "Test your knowledge of the JavaScript Math object with this quiz." + "Pon a prueba tus conocimientos sobre el objeto Math de JavaScript con este cuestionario." ] }, "lecture-understanding-comparisons-and-conditionals": { - "title": "Understanding Comparisons and Conditionals", + "title": "Comprensión de comparaciones y condicionales", "intro": [ "In these lessons, you will learn about comparison operators and conditionals. You will learn how the various conditionals differ from one another, and how comparisons work with null and undefined." ] }, "review-javascript-comparisons-and-conditionals": { - "title": "JavaScript Comparisons and Conditionals Review", + "title": "Comparaciones y repaso de condicionales en JavaScript", "intro": [ - "Before you're quizzed on working with conditionals, you should review what you've learned about them.", - "Open up this page to review how to work with switch statements, other types of conditionals and more." + "Antes de que te pregunten sobre cómo trabajar con condicionales, debes repasar lo que has aprendido sobre ellos.", + "Abra esta página para revisar cómo trabajar con declaraciones switch, otros tipos de condicionales y más." ] }, "quiz-javascript-comparisons-and-conditionals": { - "title": "JavaScript Comparisons and Conditionals Quiz", + "title": "Cuestionario sobre comparaciones y condiciones en JavaScript", "intro": [ - "Test your knowledge of JavaScript Comparisons and Conditionals with this quiz." + "Pon a prueba tus conocimientos sobre comparaciones y condicionales de JavaScript con este cuestionario." ] }, "lecture-working-with-functions": { - "title": "Working with Functions", + "title": "Trabajar con funciones", "intro": [ "In these lessons, you will learn how to reuse a block of code with functions. You will learn what the purpose of a function is and how they work, and how scope works in programming. " ] }, "workshop-calculator": { - "title": "Build a Calculator", + "title": "Construir una calculadora", "intro": [ - "In this workshop, you will review your knowledge of functions by building a calculator." + "En este taller revisarás tus conocimientos sobre funciones construyendo una calculadora." ] }, "lab-boolean-check": { @@ -3233,17 +3249,17 @@ ] }, "lab-email-masker": { - "title": "Build an Email Masker", + "title": "Crea un enmascarador de correo electrónico", "intro": [ - "In this lab, you'll build an email masker that will take an email address and obscure it.", - "You'll practice string slicing, concatenation, and using functions." + "En este laboratorio, creará un enmascarador de correo electrónico que tomará una dirección de correo electrónico y la ocultará.", + "Practicarás la segmentación de cadenas, la concatenación y el uso de funciones." ] }, "workshop-loan-qualification-checker": { - "title": "Build a Loan Qualification Checker", + "title": "Cree un verificador de calificación de préstamos", "intro": [ - "In this workshop, you will continue to learn how to work with conditionals by building a loan qualification checker app.", - "You will learn more about if statements, and how to use comparison operators and multiple conditions in an if statement." + "En este taller, continuará aprendiendo cómo trabajar con condicionales mediante la creación de una aplicación de verificación de calificación de préstamos.", + "Aprenderá más sobre las declaraciones if y cómo usar operadores de comparación y condiciones múltiples en una declaración if." ] }, "lab-celsius-to-fahrenheit-converter": { @@ -3257,9 +3273,9 @@ "intro": ["In this lab you will use JavaScript to count dealt cards."] }, "lab-leap-year-calculator": { - "title": "Build a Leap Year Calculator ", + "title": "Construya una calculadora de años bisiestos ", "intro": [ - "In this lab you'll use conditional statements and loops to determine if a year is a leap year." + "En este laboratorio, utilizará declaraciones condicionales y bucles para determinar si un año es bisiesto." ] }, "lab-truncate-string": { @@ -3275,33 +3291,35 @@ ] }, "review-javascript-functions": { - "title": "JavaScript Functions Review", + "title": "Revisión de funciones de JavaScript", "intro": [ - "Before you're quizzed on JavaScript functions, you should review what you've learned about them.", - "Open up this page to review functions, arrow functions and scope." + "Antes de que te pregunten sobre las funciones de JavaScript, debes repasar lo que has aprendido sobre ellas.", + "Abra esta página para revisar funciones, funciones de flecha y alcance." ] }, "quiz-javascript-functions": { - "title": "JavaScript Functions Quiz", - "intro": ["Test your knowledge of JavaScript functions with this quiz."] + "title": "Cuestionario sobre funciones de JavaScript", + "intro": [ + "Pon a prueba tus conocimientos de las funciones de JavaScript con este cuestionario." + ] }, "lecture-working-with-arrays": { - "title": "Working with Arrays", + "title": "Trabajar con matrices", "intro": [ "In these lessons, you will learn how to work with JavaScript arrays. You will learn about what makes an array, one-dimensional and two-dimensional arrays, how to access and update the elements in an array, and much more." ] }, "workshop-shopping-list": { - "title": "Build a Shopping List", + "title": "Crea una lista de compras", "intro": [ - "In this workshop, you will practice how to work with arrays by building a shopping list.", - "You will review how to add and remove elements from an array using methods like push, pop, shift, and unshift." + "En este taller practicarás cómo trabajar con matrices creando una lista de compras.", + "Revisará cómo agregar y eliminar elementos de una matriz usando métodos como push, pop, shift y unshift." ] }, "lab-lunch-picker-program": { - "title": "Build a Lunch Picker Program", + "title": "Cree un programa de recolección de almuerzos", "intro": [ - "In this lab, you'll review working with arrays and random numbers by building a lunch picker program." + "En este laboratorio, revisará el trabajo con matrices y números aleatorios mediante la creación de un programa de selección de almuerzos." ] }, "lab-golf-score-translator": { @@ -3317,21 +3335,23 @@ ] }, "lecture-working-with-common-array-methods": { - "title": "Working with Common Array Methods", + "title": "Cómo trabajar con métodos de matriz comunes", "intro": [ "In these lessons, you will learn about the array methods for performing more advanced operations like getting the position of an item in an array, checking if an array contains a certain element, copying an array, and lots more." ] }, "review-javascript-arrays": { - "title": "JavaScript Arrays Review", + "title": "Revisión de matrices de JavaScript", "intro": [ - "Before you're quizzed on JavaScript arrays, you should review what you've learned about them.", - "Open up this page to review concepts like array destructuring, how to add and remove elements from an array, and more." + "Antes de que te pregunten sobre las matrices de JavaScript, debes repasar lo que has aprendido sobre ellas.", + "Abra esta página para revisar conceptos como la desestructuración de matrices, cómo agregar y eliminar elementos de una matriz y más." ] }, "quiz-javascript-arrays": { - "title": "JavaScript Arrays Quiz", - "intro": ["Test your knowledge of JavaScript arrays with this quiz."] + "title": "Cuestionario sobre matrices en JavaScript", + "intro": [ + "Pon a prueba tus conocimientos sobre matrices de JavaScript con este cuestionario" + ] }, "lecture-introduction-to-javascript-objects-and-their-properties": { "title": "Introduction to JavaScript Objects and Their Properties", @@ -3352,16 +3372,16 @@ ] }, "workshop-recipe-tracker": { - "title": "Build a Recipe Tracker", + "title": "Crea un rastreador de recetas", "intro": [ - "In this workshop, you will review working with JavaScript objects by building a recipe tracker." + "En este taller, revisará cómo trabajar con objetos JavaScript mediante la creación de un rastreador de recetas." ] }, "lab-quiz-game": { - "title": "Build a Quiz Game", + "title": "Crea un juego de preguntas y respuestas", "intro": [ - "In this lab, you'll build a quiz game using JavaScript arrays and objects.", - "You'll also practice using functions to randomly select a question and an answer from an array and compare them." + "En este laboratorio, crearás un juego de preguntas y respuestas utilizando matrices y objetos de JavaScript.", + "También practicarás el uso de funciones para seleccionar aleatoriamente una pregunta y una respuesta de una matriz y compararlas." ] }, "lab-record-collection": { @@ -3371,26 +3391,28 @@ ] }, "review-javascript-objects": { - "title": "JavaScript Objects Review", + "title": "Revisión de objetos de JavaScript", "intro": [ - "Before you're quizzed on JavaScript objects, you should review what you've learned about them.", - "Open up this page to review concepts including how to access information from objects, object destructuring, working with JSON, and more." + "Antes de que te examinen sobre los objetos de JavaScript, debes repasar lo que has aprendido sobre ellos.", + "Abra esta página para revisar conceptos que incluyen cómo acceder a la información de los objetos, la desestructuración de objetos, cómo trabajar con JSON y más." ] }, "quiz-javascript-objects": { - "title": "JavaScript Objects Quiz", - "intro": ["Test your knowledge of JavaScript objects with this quiz."] + "title": "Cuestionario sobre objetos de JavaScript", + "intro": [ + "Pon a prueba tus conocimientos sobre objetos JavaScript con este cuestionario" + ] }, "lecture-working-with-loops": { - "title": "Working with Loops", + "title": "Trabajar con bucles", "intro": [ "Loops are an essential part of JavaScript. That's why the following lessons have been prepared for you to learn about the different types of loops and how they work, and also how iteration works." ] }, "workshop-sentence-analyzer": { - "title": "Build a Sentence Analyzer", + "title": "Construir un analizador de oraciones", "intro": [ - "In this workshop, you'll review how to work with JavaScript loops by building a sentence analyzer app." + "En este taller, revisará cómo trabajar con bucles de JavaScript mediante la creación de una aplicación analizadora de oraciones." ] }, "lab-longest-word-in-a-string": { @@ -3400,10 +3422,10 @@ ] }, "lab-factorial-calculator": { - "title": "Build a Factorial Calculator ", + "title": "Construir una calculadora factorial", "intro": [ - "In this lab, you'll build a factorial calculator.", - "You'll practice using loops and conditionals to calculate the factorial of a number." + "En este laboratorio, construirás una calculadora factorial.", + "Practicarás el uso de bucles y condicionales para calcular el factorial de un número." ] }, "lab-mutations": { @@ -3437,15 +3459,17 @@ ] }, "review-javascript-loops": { - "title": "JavaScript Loops Review", + "title": "Revisión de bucles de JavaScript", "intro": [ - "Before you're quizzed on the different JavaScript loops, you should review them.", - "Open up this page to review the for...of loop, while loop, break and continue statements and more." + "Antes de que te pregunten sobre los diferentes bucles de JavaScript, debes revisarlos.", + "Abra esta página para revisar el bucle for...of, el bucle while, las instrucciones break y continue y más." ] }, "quiz-javascript-loops": { - "title": "JavaScript Loops Quiz", - "intro": ["Test your knowledge of JavaScript loops with this quiz."] + "title": "Cuestionario sobre bucles en JavaScript", + "intro": [ + "Pon a prueba tus conocimientos sobre bucles de JavaScript con este cuestionario." + ] }, "lecture-working-with-types-and-objects": { "title": "Working with Types and Objects", @@ -3484,21 +3508,21 @@ ] }, "lab-pyramid-generator": { - "title": "Build a Pyramid Generator", + "title": "Construye un generador de pirámides", "intro": [ - "In this lab you'll build a pyramid generator.", - "You'll take a number as input and generate a pyramid with that many levels using a loop." + "En este laboratorio construirás un generador piramidal.", + "Tomarás un número como entrada y generarás una pirámide con esa cantidad de niveles usando un bucle." ] }, "lab-gradebook-app": { - "title": "Build a Gradebook App", + "title": "Crear una aplicación de libro de calificaciones", "intro": [ - "For this lab, you'll create a gradebook app.", - "You'll practice conditionals to determine the student's grade based on their score." + "Para este laboratorio, creará una aplicación de libro de calificaciones.", + "Practicarás condicionales para determinar la calificación del estudiante en función de su puntaje." ] }, "lecture-the-var-keyword-and-hoisting": { - "title": "The var Keyword and Hoisting", + "title": "La palabra clave var y la elevación", "intro": [ "In these lessons, you will learn about the var keyword and why it is not recommended for use anymore. You will also learn about hoisting in JavaScript so you can avoid subtle bugs in your code." ] @@ -3516,14 +3540,14 @@ ] }, "lab-inventory-management-program": { - "title": "Build an Inventory Management Program", + "title": "Desarrollar un programa de gestión de inventario", "intro": [ - "For this lab, you'll build an inventory management program using JavaScript.", - "You'll use JavaScript array of objects to manage the inventory." + "En este laboratorio, creará un programa de gestión de inventario utilizando JavaScript.", + "Utilizará una matriz de objetos JavaScript para administrar el inventario." ] }, "lecture-understanding-modules-imports-and-exports": { - "title": "Understanding Modules, Imports, and Exports", + "title": "Comprensión de módulos, importaciones y exportaciones", "intro": [ "In this lesson, you will learn about modules, imports, and exports in JavaScript." ] @@ -3541,9 +3565,9 @@ ] }, "lab-password-generator": { - "title": "Build a Password Generator App", + "title": "Cree una aplicación generadora de contraseñas", "intro": [ - "In this lab, you'll build a password generator app based on the user's input." + "En este laboratorio, creará una aplicación generadora de contraseñas basada en la entrada del usuario." ] }, "lab-sum-all-numbers-algorithm": { @@ -3583,34 +3607,34 @@ ] }, "review-javascript-fundamentals": { - "title": "JavaScript Fundamentals Review", + "title": "Repaso de los fundamentos de JavaScript", "intro": [ - "Before you are quizzed on JavaScript fundamentals, you first need to review the concepts.", - "Open up this page to review concepts like closures, memory management, and more." + "Antes de que te examinen sobre los fundamentos de JavaScript, primero debes repasar los conceptos.", + "Abra esta página para revisar conceptos como cierres, gestión de memoria y más." ] }, "quiz-javascript-fundamentals": { - "title": "JavaScript Fundamentals Quiz", + "title": "Cuestionario sobre los fundamentos de JavaScript", "intro": [ - "Test your knowledge of JavaScript fundamentals with this quiz." + "Pon a prueba tus conocimientos de los fundamentos de JavaScript con este cuestionario." ] }, "lecture-working-with-higher-order-functions-and-callbacks": { - "title": "Working with Higher Order Functions and Callbacks", + "title": "Trabajar con funciones de orden superior y devoluciones de llamadas", "intro": [ "In these lessons, you will learn how to work with higher order functions and callbacks. The higher order functions you will learn include map(), filter(), reduce(), sort(), every(), and some(). You will also learn how to chain these methods together to achieve your desired results." ] }, "workshop-library-manager": { - "title": "Build a Library Manager", + "title": "Crear un administrador de biblioteca", "intro": [ - "In this workshop, you will learn higher order array methods by building a library manager." + "En este taller, aprenderás métodos de arreglos de orden superior al construir un administrador de bibliotecas." ] }, "lab-book-organizer": { - "title": "Build a Book Organizer", + "title": "Construye un organizador de libros", "intro": [ - "In this lab, you'll build a book organizer using higher order functions in JavaScript." + "En este laboratorio, creará un organizador de libros utilizando funciones de orden superior en JavaScript." ] }, "lab-sorted-index-finder": { @@ -3662,28 +3686,28 @@ ] }, "review-javascript-higher-order-functions": { - "title": "JavaScript Higher Order Functions Review", + "title": "Revisión de funciones de orden superior de JavaScript", "intro": [ - "Before you're quizzed on JavaScript higher order functions, you should review them.", - "Open up this page to review concepts including how to work with the map(), filter(), and reduce() methods." + "Antes de que te pregunten sobre las funciones de orden superior de JavaScript, deberías repasarlas.", + "Abra esta página para revisar conceptos que incluyen cómo trabajar con los métodos map(), filter() y reduce()." ] }, "quiz-javascript-higher-order-functions": { - "title": "JavaScript Higher Order Functions Quiz", + "title": "Cuestionario sobre funciones de orden superior en JavaScript", "intro": [ - "Test your knowledge of JavaScript higher order functions with this quiz." + "Pon a prueba tus conocimientos sobre las funciones de orden superior de JavaScript con este cuestionario" ] }, "lecture-working-with-the-dom-click-events-and-web-apis": { - "title": "Working with the DOM, Click Events, and Web APIs", + "title": "Trabajar con DOM, eventos de clic y API web", "intro": [ "In these lessons, you will learn how to work with the Document Object Model (DOM), the addEventListener() method and events, and web APIs." ] }, "workshop-storytelling-app": { - "title": "Build a Storytelling App", + "title": "Crea una aplicación para contar historias", "intro": [ - "In this workshop, you will build a storytelling app that will allow you to list different stories based on genre." + "En este taller, crearás una aplicación de narración de historias que te permitirá enumerar diferentes historias según el género." ] }, "workshop-emoji-reactor": { @@ -3693,60 +3717,60 @@ ] }, "lab-favorite-icon-toggler": { - "title": "Build a Favorite Icon Toggler", + "title": "Crea un conmutador de iconos favoritos", "intro": [ - "In this lab, you'll build a favorite icon toggler by utilizing JavaScript click events." + "En este laboratorio, creará un conmutador de íconos favoritos utilizando eventos de clic de JavaScript." ] }, "lecture-understanding-the-event-object-and-event-delegation": { - "title": "Understanding the Event Object and Event Delegation", + "title": "Comprensión del objeto de evento y la delegación de eventos", "intro": [ "In these lessons, you will learn about the event object, the change event, event bubbling, and event delegation." ] }, "workshop-music-instrument-filter": { - "title": "Build a Music Instrument Filter", + "title": "Construir un filtro de instrumento musical", "intro": [ - "In this workshop, you will build a music instrument filter with JavaScript." + "En este taller, construirás un filtro de instrumento musical con JavaScript." ] }, "lab-real-time-counter": { - "title": "Build a Real Time Counter", + "title": "Construir un contador en tiempo real", "intro": [ - "In this lab, you'll build a real-time character counter", - "You'll practice how to work with the input event when the user types in the input field." + "En este laboratorio, construirás un contador de personajes en tiempo real.", + "Practicarás cómo trabajar con el evento input cuando el usuario escribe en el campo de entrada." ] }, "lab-lightbox-viewer": { - "title": "Build a Lightbox Viewer", + "title": "Construir un visor Lightbox", "intro": [ "In this lab, you'll build a lightbox viewer for viewing images in a focused mode.", - "You'll practice click events and toggling classes." + "Practicarás eventos de clic y alternancia de clases." ] }, "workshop-rps-game": { - "title": "Build a Rock, Paper, Scissors Game", + "title": "Construye un juego de piedra, papel y tijera", "intro": [ - "In this workshop, you will review DOM manipulation and events by building a Rock, Paper, Scissors Game." + "En este taller, revisará la manipulación y los eventos del DOM mediante la construcción de un juego de piedra, papel y tijera." ] }, "lab-football-team-cards": { - "title": "Build a Set of Football Team Cards", + "title": "Construye un conjunto de tarjetas de equipo de fútbol", "intro": [ - "In this lab, you'll use DOM manipulation, object destructuring, event handling, and data filtering to build a set of football team cards." + "En este laboratorio, utilizará la manipulación de DOM, la desestructuración de objetos, el manejo de eventos y el filtrado de datos para crear un conjunto de tarjetas de equipo de fútbol." ] }, "review-dom-manipulation-and-click-events-with-javascript": { - "title": "DOM Manipulation and Click Events with JavaScript Review", + "title": "Revisión de manipulación de DOM y eventos de clic con JavaScript", "intro": [ - "Before you're quizzed on the DOM, you should review what you've learned about it.", - "Open up this page to review concepts including how to work with the DOM, Web APIs, the addEventListener() method, change events, event bubbling and more." + "Antes de que te examinen sobre el DOM, debes repasar lo que has aprendido sobre él.", + "Abre esta página para repasar conceptos que incluyen cómo trabajar con el DOM, las Web APIs, el método addEventListener(), los eventos de cambio, la propagación de eventos y más." ] }, "quiz-dom-manipulation-and-click-event-with-javascript": { - "title": "DOM Manipulation and Click Events with JavaScript Quiz", + "title": "Manipulación del DOM y eventos de clic con JavaScript", "intro": [ - "Test your knowledge of DOM manipulation and click events in JavaScript with this quiz." + "Pon a prueba tus conocimientos sobre la manipulación del DOM y los eventos de clic en JavaScript con este cuestionario." ] }, "lecture-understanding-aria-expanded-aria-live-and-common-aria-states": { @@ -3788,57 +3812,61 @@ ] }, "lecture-debugging-techniques": { - "title": "Debugging Techniques", + "title": "Técnicas de depuración", "intro": [ "In these lessons, you will learn about the common errors in JavaScript and the techniques you can use to fix them – a process called debugging." ] }, "lab-random-background-color-changer": { - "title": "Debug a Random Background Color Changer", + "title": "Depurar un cambiador de color de fondo aleatorio", "intro": [ - "In this lab, you'll debug a random background color changer and fix the errors to make it work properly." + "En este laboratorio, depurará un cambiador de color de fondo aleatorio y corregirá los errores para que funcione correctamente." ] }, "review-debugging-javascript": { - "title": "Debugging JavaScript Review", + "title": "Revisión de depuración de JavaScript", "intro": [ - "Before you're quizzed on common debugging techniques, you should review what you've learned.", - "Open up this page to review concepts including how to work with the throw statement, try...catch...finally and more." + "Antes de que te pregunten sobre técnicas de depuración comunes, debes repasar lo que has aprendido.", + "Abra esta página para revisar conceptos que incluyen cómo trabajar con la declaración throw, try...catch...finally/code> y más.finalmente y más." ] }, "quiz-debugging-javascript": { - "title": "Debugging JavaScript Quiz", - "intro": ["Test your knowledge of JavaScript debugging with this quiz."] + "title": "Cuestionario sobre depuración de JavaScript", + "intro": [ + "Pon a prueba tus conocimientos de depuración de JavaScript con este cuestionario." + ] }, "lecture-working-with-regular-expressions": { - "title": "Working with Regular Expressions", + "title": "Trabajar con expresiones regulares", "intro": [ "In these lessons, you will learn about regular expressions in JavaScript. You will learn about the methods for working with regular expressions, modifiers, character classes, lookaheads, lookbehinds, back-references, quantifiers, and more." ] }, "workshop-spam-filter": { - "title": "Build a Spam Filter", + "title": "Construir un filtro antispam", "intro": [ - "Regular expressions, often shortened to \"regex\" or \"regexp\", are patterns that help programmers match, search, and replace text. Regular expressions are powerful, but can be difficult to understand because they use so many special characters.", - "In this workshop, you'll use capture groups, positive lookaheads, negative lookaheads, and other techniques to match any text you want." + "Las expresiones regulares, a menudo abreviadas como \"regex\" o \"regexp\", son patrones que ayudan a los programadores a encontrar, buscar y reemplazar texto. Las expresiones regulares son potentes, pero pueden resultar difíciles de entender porque utilizan muchos caracteres especiales.", + "En este taller, utilizarás grupos de captura, anticipaciones positivas, anticipaciones negativas y otras técnicas para hacer coincidir cualquier texto que desees." ] }, "lab-palindrome-checker": { - "title": "Build a Palindrome Checker", + "title": "Construir un verificador de palíndromos", "intro": [ - "For this lab, you'll build an application that checks whether a given word is a palindrome." + "En este laboratorio, crearás una aplicación que verifique si una palabra determinada es un palíndromo." ] }, "lab-markdown-to-html-converter": { - "title": "Build a Markdown to HTML Converter", + "title": "Cree un convertidor de Markdown a HTML", "intro": [ - "For this lab, you'll build a Markdown to HTML converter using JavaScript.", - "You'll practice regular expressions, string manipulation, and more." + "En este laboratorio, crearás un convertidor de Markdown a HTML usando JavaScript.", + "Practicarás expresiones regulares, manipulación de cadenas y más." ] }, "lab-regex-sandbox": { - "title": "Build a RegEx Sandbox", - "intro": ["In this lab you'll build a regex sandbox."] + "title": "Construir un Sandbox de RegEx", + "intro": [ + "En este laboratorio construirás un entorno sandbox de expresiones regulares." + ] }, "lab-spinal-case-converter": { "title": "Implement a Spinal Case Converter", @@ -3860,316 +3888,318 @@ ] }, "review-javascript-regular-expressions": { - "title": "JavaScript Regular Expressions Review", + "title": "Reviso de expreciones regulares de JavaScript", "intro": [ - "Before you're quizzed on Regular Expressions, you should review what you've learned.", - "Open up this page to review concepts like lookaheads, lookbehinds, common regex modifiers and more." + "Antes de que te examinen sobre expresiones regulares, debes repasar lo que has aprendido.", + "Abra esta página para revisar conceptos como lookaheads, lookbehinds, modificadores de expresiones regulares comunes y más." ] }, "quiz-javascript-regular-expressions": { - "title": "JavaScript Regular Expressions Quiz", + "title": "Quiz de expresiones regulares de JavaScript", "intro": [ - "Test your knowledge of JavaScript Regular Expressions with this quiz." + "Pon a prueba tus conocimientos de expresiones regulares de JavaScript con este cuestionario." ] }, "lecture-understanding-form-validation": { - "title": "Understanding Form Validation", + "title": "Comprensión de la validación de formularios", "intro": [ "In these lessons, you will learn about form validation in JavaScript. You will learn about the various ways to validate forms, how the preventDefault() method works, and how the submit event works." ] }, "workshop-calorie-counter": { - "title": "Build a Calorie Counter", + "title": "Construye un contador de calorías", "intro": [ - "Sometimes when you're coding a web application, you'll need to be able to accept input from a user. In this calorie counter workshop, you'll practice how to validate user input, perform calculations based on that input, and dynamically update your interface to display the results.", - "You'll also practice basic regular expressions, template literals, the addEventListener() method, and more." + "A veces, cuando estás codificando una aplicación web, necesitarás poder aceptar la entrada de un usuario. En este taller de contador de calorías, practicarás cómo validar la entrada del usuario, realizar cálculos basados ​​en esa entrada y actualizar dinámicamente tu interfaz para mostrar los resultados.", + "También practicarás expresiones regulares básicas, literales de plantilla, el método addEventListener() y más." ] }, "lab-customer-complaint-form": { - "title": "Build a Customer Complaint Form", + "title": "Cree un formulario de quejas de clientes", "intro": [ - "For this lab, you'll use JavaScript to validate a customer complaint form.", - "You'll practice how to validate form inputs, display error messages, and prevent the form from submitting if there are errors." + "En este laboratorio, utilizará JavaScript para validar un formulario de queja de un cliente.", + "Practicará cómo validar las entradas del formulario, mostrar mensajes de error y evitar que el formulario se envíe si hay errores." ] }, "review-form-validation-with-javascript": { - "title": "Form Validation with JavaScript Review", + "title": "Revisión de la validación de formularios con JavaScript", "intro": [ - "Before you're quizzed on form validation, you should review what you've learned.", - "Open up this page to review concepts including the preventDefault() method, the submit event and more." + "Antes de que te cuestionen sobre la validación de formularios, debes repasar lo que has aprendido.", + "Abra esta página para revisar conceptos, incluido el método preventDefault(), el evento de envío y más." ] }, "quiz-form-validation-with-javascript": { - "title": "Form Validation with JavaScript Quiz", + "title": "Cuestionario sobre validación de formularios con JavaScript", "intro": [ - "Test what you've learned about JavaScript form validation with this quiz." + "Pon a prueba lo que has aprendido sobre la validación de formularios de JavaScript con este cuestionario." ] }, "lecture-working-with-dates": { - "title": "Working with Dates", + "title": "Trabajar con fechas", "intro": [ "In these lessons, you will learn about the JavaScript date object. You will learn about the methods for working with dates and how to format dates." ] }, "lab-date-conversion": { - "title": "Build a Date Conversion Program", + "title": "Cree un programa de conversión de fechas", "intro": [ - "In this lab, you'll build a program to convert a date from one format to another." + "En este laboratorio, creará un programa para convertir una fecha de un formato a otro." ] }, "review-javascript-dates": { - "title": "JavaScript Dates Review", + "title": "Revisión de fechas de JavaScript", "intro": [ - "Before you're quizzed on working with dates, you should review what you've learned.", - "Open up this page to review the Date() object and common methods." + "Antes de que te pregunten sobre cómo trabajar con fechas, debes repasar lo que has aprendido.", + "Abra esta página para revisar el objeto Date() y los métodos comunes." ] }, "quiz-javascript-dates": { - "title": "JavaScript Dates Quiz", + "title": "Cuestionario sobre fechas en JavaScript", "intro": [ - "Test what you've learned about JavaScript Dates with this quiz." + "Pon a prueba lo que has aprendido sobre fechas de JavaScript con este cuestionario." ] }, "lecture-working-with-audio-and-video": { - "title": "Working with Audio and Video", + "title": "Trabajar con audio y vídeo", "intro": [ "In these lessons, you will learn how to work with audio and video files using JavaScript. You will learn about the Audio and Video constructors, their methods and properties, audio and video formats, codecs, the HTMLMediaElement API, and much more." ] }, "workshop-music-player": { - "title": "Build a Music Player", + "title": "Construir un reproductor de música", "intro": [ - "In this workshop, you'll code a basic MP3 player using HTML, CSS, and JavaScript.", - "The project covers fundamental concepts such as handling audio playback, managing a playlist, implementing play, pause, next, and previous functionalities and dynamically update your user interface based on the current song." + "En este taller, codificará un reproductor de MP3 básico utilizando HTML, CSS y JavaScript.", + "El proyecto cubre conceptos fundamentales como el manejo de la reproducción de audio, la gestión de una lista de reproducción, la implementación de funcionalidades de reproducción, pausa, siguiente y anterior y la actualización dinámica de su interfaz de usuario en función de la canción actual." ] }, "lab-drum-machine": { - "title": "Build a Drum Machine", + "title": "Construir una caja de ritmos", "intro": [ - "For this lab you will use the audio element to build a drum machine." + "En este laboratorio, utilizará el elemento audio para construir una caja de ritmos." ] }, "review-javascript-audio-and-video": { - "title": "JavaScript Audio and Video Review", + "title": "Reseña de audio y video de JavaScript", "intro": [ - "Before you're quizzed on working with audio and video in JavaScript, you should review what you've learned about them.", - "Open up this page to review concepts including the Audio constructor, the HTMLMediaElement API and more." + "Antes de que te pregunten sobre cómo trabajar con audio y video en JavaScript, debes repasar lo que has aprendido sobre ellos.", + "Abra esta página para revisar conceptos, incluido el constructor Audio, la API HTMLMediaElement y más." ] }, "quiz-javascript-audio-and-video": { - "title": "JavaScript Audio and Video Quiz", + "title": "Cuestionario de audio y video sobre JavaScript", "intro": [ - "Test what you've learned about JavaScript audio and video with this quiz." + "Pon a prueba lo que has aprendido sobre audio y vídeo en JavaScript con este cuestionario." ] }, "lecture-working-with-maps-and-sets": { - "title": "Working with Maps and Sets", + "title": "Trabajar con mapas y conjuntos", "intro": [ "In these lessons, you will learn about JavaScript Map and Set. You will also learn how they both differ from WeakSets and WeakMaps." ] }, "workshop-plant-nursery-catalog": { - "title": "Build a Plant Nursery Catalog", + "title": "Construya un catálogo de vivero de plantas", "intro": [ - "In this workshop, you will practice using Maps and Sets by building a plant nursery catalog." + "En este taller, practicarás el uso de mapas y conjuntos mediante la creación de un catálogo de vivero de plantas." ] }, "lab-voting-system": { - "title": "Build a Voting System", + "title": "Construir un sistema de votación", "intro": [ - "In this lab, you'll build a voting system using Maps and Sets.", - "You'll practice how to use the Map object to store key-value pairs and the Set object to store unique values." + "En este laboratorio, construirá un sistema de votación utilizando mapas y conjuntos.", + "Practicará cómo utilizar el objeto Map para almacenar pares clave-valor y el objeto Set para almacenar valores únicos." ] }, "review-javascript-maps-and-sets": { - "title": "JavaScript Maps and Sets Review", + "title": "Revisión de mapas y conjuntos de JavaScript", "intro": [ - "Before you're quizzed on JavaScript Maps and Sets, you should review what you've learned about them.", - "Open up this page to review concepts such as the Map and Set objects, as well as WeakSet and WeakMap." + "Antes de que te examinen sobre mapas y conjuntos de JavaScript, debes repasar lo que has aprendido sobre ellos.", + "Abra esta página para revisar conceptos como los objetos Map y Set, así como WeakSet y WeakMap." ] }, "quiz-javascript-maps-and-sets": { - "title": "JavaScript Maps and Sets Quiz", + "title": "Cuestionario sobre mapas y conjuntos de JavaScript", "intro": [ - "Test what you've learned about JavaScript Maps and Sets with this quiz." + "Pon a prueba lo que has aprendido sobre mapas y conjuntos de JavaScript con este cuestionario." ] }, "lecture-working-with-client-side-storage-and-crud-operations": { - "title": "Working with Client-Side Storage and CRUD Operations", + "title": "Trabajar con operaciones CRUD y almacenamiento del lado del cliente", "intro": [ "In these lessons, you will learn about client-side storage and CRUD operations in JavaScript. You will learn about localStorage and sessionStorage alongside their methods and properties, cookies, the Cache API, IndexDB, and much more." ] }, "workshop-todo-app": { - "title": "Build a Todo App using Local Storage", + "title": "Cree una aplicación de tareas pendientes utilizando el almacenamiento local", "intro": [ - "Local storage is a web browser feature that lets web applications store key-value pairs persistently within a user's browser. This allows web apps to save data during one session, then retrieve it in a later page session.", - "In this workshop, you'll learn how to handle form inputs, manage local storage, perform CRUD (Create, Read, Update, Delete) operations on tasks, implement event listeners, and toggle UI elements." + "El almacenamiento local es una función del navegador web que permite que las aplicaciones web almacenen pares clave-valor de forma persistente en el navegador de un usuario. Esto permite que las aplicaciones web guarden datos durante una sesión y luego los recuperen en una sesión de página posterior.", + "En este taller, aprenderá cómo manejar entradas de formulario, administrar el almacenamiento local, realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) en tareas, implementar escuchas de eventos y alternar elementos de la interfaz de usuario." ] }, "lab-bookmark-manager-app": { - "title": "Build a Bookmark Manager App", + "title": "Cree una aplicación de gestión de marcadores", "intro": [ - "For this lab, you'll build a bookmark manager app.", - "You'll utilize local storage to store bookmarks, and practice how to add, remove, and display bookmarks." + "Para este laboratorio, creará una aplicación de administración de marcadores.", + "Utilizará el almacenamiento local para guardar marcadores y practicará cómo agregar, eliminar y mostrar marcadores." ] }, "review-local-storage-and-crud": { - "title": "Local Storage and CRUD Review", + "title": "Revisión de almacenamiento local y CRUD", "intro": [ - "Before you are quizzed on working with localStorage, you first need to review the concepts.", - "Open up this page to review the localStorage property, sessionStorage property and more." + "Antes de que le pregunten cómo trabajar con localStorage, primero debe repasar los conceptos.", + "Abra esta página para revisar la propiedad localStorage, la propiedad sessionStorage y más." ] }, "quiz-local-storage-and-crud": { - "title": "Local Storage and CRUD Quiz", + "title": "Cuestionario sobre almacenamiento local y CRUD", "intro": [ - "Test what you've learned about local storage and CRUD with this quiz." + "Pon a prueba lo que has aprendido sobre almacenamiento local y CRUD con este cuestionario." ] }, "lecture-understanding-how-to-work-with-classes-in-javascript": { - "title": "Understanding How to Work with Classes in JavaScript", + "title": "Entendiendo cómo trabajar con clases en JavaScript", "intro": [ "In these lessons, you will learn about classes in JavaScript. You will learn about inheritance, the this keyword, static properties and methods, and more." ] }, "workshop-shopping-cart": { - "title": "Build a Shopping Cart", + "title": "Crea un carrito de compras", "intro": [ - "In this workshop you'll create a shopping cart using JavaScript classes.", - "You will practice how to use the this keyword, create class instances, implement methods for data manipulation and more." + "En este taller crearás un carrito de compras utilizando clases de JavaScript.", + "Practicará cómo usar la palabra clave this, crear instancias de clase, implementar métodos para la manipulación de datos y más." ] }, "lab-project-idea-board": { - "title": "Build a Project Idea Board", + "title": "Construir un tablero de ideas para proyectos", "intro": [ - "In this lab, you'll build a project idea board using OOP in JavaScript.", - "You'll practice how to create classes, add methods to classes, and create instances of classes." + "En este laboratorio, creará un tablero de ideas de proyecto utilizando OOP en JavaScript.", + "Practicarás cómo crear clases, agregar métodos a clases y crear instancias de clases." ] }, "lab-bank-account-manager": { - "title": "Build a Bank Account Management Program", + "title": "Desarrollar un programa de gestión de cuentas bancarias", "intro": [ - "In this lab, you'll build a simple transaction management system for a bank account." + "En este laboratorio, construirá un sistema simple de gestión de transacciones para una cuenta bancaria." ] }, "review-javascript-classes": { - "title": "JavaScript Classes Review", + "title": "Revisión de clases de JavaScript", "intro": [ - "Before you're quizzed on how to work with classes, you should review what you've learned about them.", - "Open up this page to review concepts including the this keyword, class inheritance and more." + "Antes de que te pregunten cómo trabajar con clases, debes repasar lo que has aprendido sobre ellas.", + "Abra esta página para revisar conceptos que incluyen la palabra clave this, herencia de clases y más." ] }, "quiz-javascript-classes": { - "title": "JavaScript Classes Quiz", + "title": "Cuestionario sobre clases de JavaScript", "intro": [ "Test what you've learned about JavaScript classes with this quiz." ] }, "lecture-understanding-recursion-and-the-call-stack": { - "title": "Understanding Recursion and the Call Stack", + "title": "Comprender la recursión y la pila de llamadas", "intro": [ "In this lesson, you will learn about recursion and the call stack." ] }, "workshop-decimal-to-binary-converter": { - "title": "Build a Decimal to Binary Converter", + "title": "Construya un convertidor de decimal a binario", "intro": [ - "Recursion is a programming concept where a function calls itself. This can reduce a complex problem into simpler sub-problems, until they become straightforward to solve.", - "In this workshop, you’ll build a decimal-to-binary converter using JavaScript. You’ll practice the fundamental concepts of recursion, explore the call stack, and build out a visual representation of the recursion process through an animation." + "La recursión es un concepto de programación en el que una función se llama a sí misma. Esto puede reducir un problema complejo a subproblemas más simples, hasta que se vuelven fáciles de resolver.", + "En este taller, crearás un conversor de decimal a binario con JavaScript. Practicarás los conceptos fundamentales de la recursión, explorarás la pila de llamadas y crearás una representación visual del proceso de recursión mediante una animación." ] }, "lab-permutation-generator": { - "title": "Build a Permutation Generator", + "title": "Construir un generador de permutaciones", "intro": [ - "For this lab, you'll build a permutation generator that produces all possible permutations of a given string." + "En este laboratorio, construirás un generador de permutaciones que produzca todas las permutaciones posibles de una cadena determinada." ] }, "review-recursion": { - "title": "Recursion Review", + "title": "Revisión de recursión", "intro": [ - "Before you're quizzed on recursion, you should review what you've learned.", - "Open up this page to review what is recursion and what is it used for." + "Antes de que te examinen sobre la recursión, debes repasar lo que has aprendido.", + "Abra esta página para revisar qué es la recursión y para qué se utiliza." ] }, "quiz-recursion": { - "title": "Recursion Quiz", - "intro": ["Test your knowledge of Recursion with this quiz."] + "title": "Cuestionario de recursión", + "intro": [ + "Pon a prueba tus conocimientos de recursión con este cuestionario." + ] }, "lecture-understanding-functional-programming": { - "title": "Understanding Functional Programming", + "title": "Entendiendo la programación funcional", "intro": [ "In these lessons, you will learn about functional programming and how to nest functions using a technique called currying." ] }, "workshop-recipe-ingredient-converter": { - "title": "Build a Recipe Ingredient Converter", + "title": "Crea un convertidor de ingredientes de recetas", "intro": [ "In the previous lessons, you learned the core concepts behind functional programming and currying.", - "Now you will be able to apply what you have learned about currying and functional programming by building a recipe ingredient converter application." + "Ahora podrás aplicar lo que has aprendido sobre curry y programación funcional creando una aplicación de conversión de ingredientes de recetas." ] }, "lab-sorting-visualizer": { - "title": "Build a Sorting Visualizer", + "title": "Construir un visualizador de ordenamiento", "intro": [ - "For this lab, you'll use JavaScript to visualize the steps that the Bubble Sort algorithm takes to reorder an array of integers." + "En este laboratorio, utilizará JavaScript para visualizar los pasos que realiza el algoritmo Bubble Sort para reordenar una matriz de números enteros." ] }, "review-javascript-functional-programming": { - "title": "JavaScript Functional Programming Review", + "title": "Revisión de programación funcional en JavaScript", "intro": [ - "Before you're quizzed on functional programming, you should review what you've learned.", - "Open up this page to review concepts on functional programming, currying and more." + "Antes de que te examinen sobre programación funcional, debes repasar lo que has aprendido.", + "Abra esta página para revisar conceptos sobre programación funcional, currificación y más." ] }, "quiz-javascript-functional-programming": { - "title": "JavaScript Functional Programming Quiz", + "title": "Cuestionario de programación funcional en JavaScript", "intro": [ - "Test what you've learned about JavaScript functional programming with this quiz." + "Pon a prueba lo que has aprendido sobre la programación funcional de JavaScript con este cuestionario." ] }, "lecture-understanding-asynchronous-programming": { - "title": "Understanding Asynchronous Programming", + "title": "Entendiendo la programación asincrónica", "intro": [ "In these lessons, you will learn about asynchronous programming in JavaScript. You will learn about the differences between synchronous and asynchronous programming, how the async keyword works, the Fetch API, promises, async/await, the Geolocation API, and much more." ] }, "workshop-fcc-authors-page": { - "title": "Build an fCC Authors Page", + "title": "Crear una página de autores de fCC", "intro": [ - "One common aspect of web development is learning how to fetch data from an external API, then work with asynchronous JavaScript.", - "In this workshop you will practice how to use the fetch method, dynamically update the DOM to display the fetched data and paginate your data so you can load results in batches." + "Un aspecto común del desarrollo web es aprender a obtener datos de una API externa y luego trabajar con JavaScript asincrónico.", + "En este taller practicará cómo usar el método fetch, actualizar dinámicamente el DOM para mostrar los datos obtenidos y paginar sus datos para poder cargar resultados en lotes." ] }, "lab-fcc-forum-leaderboard": { - "title": "Build an fCC Forum Leaderboard", + "title": "Crear una tabla de clasificación del foro fCC", "intro": [ - "For this lab you'll practice asynchronous JavaScript by coding your own freeCodeCamp forum leaderboard." + "En este laboratorio, practicarás JavaScript asincrónico codificando tu propia tabla de clasificación del foro freeCodeCamp." ] }, "lab-weather-app": { - "title": "Build a Weather App", + "title": "Crea una aplicación meteorológica", "intro": [ - "In this lab you'll build a Weather App using an API", - "You'll practice how to fetch data from the API, store and display it on your app." + "En este laboratorio crearás una aplicación meteorológica usando una API", + "Practicarás cómo obtener datos de la API, almacenarlos y mostrarlos en tu aplicación." ] }, "review-asynchronous-javascript": { - "title": "Asynchronous JavaScript Review", + "title": "Revisión de JavaScript asincrónico", "intro": [ - "Review asynchronous JavaScript concepts to prepare for the upcoming quiz." + "Revise los conceptos de JavaScript asincrónico para prepararse para el próximo examen." ] }, "quiz-asynchronous-javascript": { - "title": "Asynchronous JavaScript Quiz", + "title": "Cuestionario sobre JavaScript asincrónico", "intro": [ - "Test what you've learned about asynchronous JavaScript with this quiz." + "Pon a prueba lo que has aprendido sobre JavaScript asincrónico con este cuestionario." ] }, "review-javascript": { - "title": "JavaScript Review", + "title": "Revisión de JavaScript", "intro": [ - "Before you take the JavaScript prep exam, you should review everything you've learned about JavaScript.", + "Antes de tomar el examen de preparación de JavaScript, debes repasar todo lo que has aprendido sobre JavaScript.", "Open up this page to review all of the concepts taught including variables, strings, booleans, functions, objects, arrays, debugging, working with the DOM and more." ] }, @@ -4178,50 +4208,54 @@ "intro": [] }, "lecture-introduction-to-javascript-libraries-and-frameworks": { - "title": "Introduction to JavaScript Libraries and Frameworks", + "title": "Introducción a las librerías y estructuras JavaScript", "intro": [ "In these lessons, you will get an introduction to JavaScript libraries and frameworks. You will learn about the roles of JavaScript libraries and frameworks, single page applications (SPAs) and the issue surrounding them, and React, the most popular frontend JavaScript library." ] }, "workshop-reusable-mega-navbar": { - "title": "Build a Reusable Mega Navbar", + "title": "Construya una mega barra de navegación reutilizable", "intro": [ "In the previous lessons, you learned how to work with components in React.", "In this workshop, you will build a reusable Navbar component using React." ] }, "lab-reusable-footer": { - "title": "Build a Reusable Footer", - "intro": ["In this lab, you'll use React to build a reusable footer."] + "title": "Crea un pie de página reutilizable", + "intro": [ + "En este laboratorio, utilizará React para crear un pie de página reutilizable." + ] }, "lecture-working-with-data-in-react": { - "title": "Working with Data in React", + "title": "Trabajar con datos en React", "intro": [ "In these lessons, you will learn how to work with data in React. You will learn about props and how to pass them around, conditional rendering, how to render lists, and how to use inline styles." ] }, "workshop-reusable-profile-card-component": { - "title": "Build a Reusable Profile Card Component", + "title": "Construya un componente de tarjeta de perfil reutilizable", "intro": [ - "In this workshop, you will learn how to work with props by building a reusable profile card component." + "En este taller, aprenderá a trabajar con accesorios mediante la construcción de un componente de tarjeta de perfil reutilizable." ] }, "lab-mood-board": { - "title": "Build a Mood Board", + "title": "Crea un tablero de estado de ánimo", "intro": [ - "In this lab, you'll create a mood board using React.", - "You'll practice how to pass data from a parent component to a child component using props." + "En este laboratorio, crearás un tablero de estado de ánimo usando React", + "Practicarás cómo pasar datos de un componente principal a un componente secundario usando propiedades." ] }, "review-react-basics": { - "title": "React Basics Review", + "title": "Revisión de los conceptos básicos de React", "intro": [ - "Review basic React concepts to prepare for the upcoming quiz." + "Revise los conceptos básicos de React para prepararse para el próximo examen." ] }, "quiz-react-basics": { - "title": "React Basics Quiz", - "intro": ["Test your knowledge of React basics with this quiz."] + "title": "Cuestionario sobre los conceptos básicos de React", + "intro": [ + "Pon a prueba tus conocimientos de los conceptos básicos de React con este cuestionario." + ] }, "lecture-working-with-state-and-responding-to-events-in-react": { "title": "Working with State and Responding to Events in React", @@ -4238,7 +4272,7 @@ "lab-color-picker": { "title": "Build a Color Picker App", "intro": [ - "In this lab you'll build a Color Picker.", + "En este laboratorio construirás un selector de colores.", "You'll practice using state and hooks to manage the properties of an element." ] }, @@ -4269,7 +4303,7 @@ ] }, "quiz-react-state-and-hooks": { - "title": "React State and Hooks Quiz", + "title": "Cuestionario sobre estados y ganchos de React", "intro": [ "Test what you've learned about React's useState and useEffect hooks with this quiz." ] @@ -4351,16 +4385,16 @@ ] }, "review-web-performance": { - "title": "Web Performance Review", + "title": "Revisión del rendimiento web", "intro": [ "Before you take the web performance quiz, you should review everything you've learned so far.", "Open up this page to review all of the concepts taught including INP, key metrics for measuring performance, Performance Web APIs and more." ] }, "quiz-web-performance": { - "title": "Web Performance Quiz", + "title": "Cuestionario sobre rendimiento web", "intro": [ - "Test what you've learned about Web Performance with this quiz." + "Pon a prueba lo que has aprendido sobre rendimiento web con este cuestionario." ] }, "lecture-understanding-the-different-types-of-testing": { @@ -4370,15 +4404,17 @@ ] }, "review-testing": { - "title": "Testing Review", + "title": "Revisión de pruebas", "intro": [ "Before you take the testing quiz, you should review everything you've learned so far.", "Open up this page to review all of the concepts taught including unit testing, end-to-end testing, functional testing and more." ] }, "quiz-testing": { - "title": "Testing Quiz", - "intro": ["Test what you've learned on testing with this quiz."] + "title": "Prueba de prueba", + "intro": [ + "Pon a prueba lo que has aprendido en las pruebas con este cuestionario." + ] }, "lecture-working-with-css-libraries-and-frameworks": { "title": "Working with CSS Libraries and Frameworks", @@ -4419,16 +4455,16 @@ ] }, "review-css-libraries-and-frameworks": { - "title": "CSS Libraries and Frameworks Review", + "title": "Revisión de bibliotecas y marcos de CSS", "intro": [ "Before you take the CSS libraries and frameworks quiz, you should review everything you've learned so far.", "Open up this page to review all of the concepts taught including CSS frameworks, CSS preprocessors, Sass and more." ] }, "quiz-css-libraries-and-frameworks": { - "title": "CSS Libraries and Frameworks Quiz", + "title": "Cuestionario sobre bibliotecas y marcos de CSS", "intro": [ - "Test what you've learned about CSS Libraries and Frameworks with this quiz." + "Pon a prueba lo que has aprendido sobre bibliotecas y marcos CSS con este cuestionario." ] }, "lecture-introduction-to-typescript": { @@ -4470,20 +4506,22 @@ "intro": [] }, "review-typescript": { - "title": "Typescript Review", + "title": "Revisión de Typescript", "intro": [ "Before you take the TypeScript quiz, you should review everything you've learned so far.", "Open up this page to review all of the concepts taught including data types in TypeScript, generics, type narrowing and more." ] }, "quiz-typescript": { - "title": "TypeScript Quiz", - "intro": ["Test what you've learned on Typescript with this quiz."] + "title": "Cuestionario sobre TypeScript", + "intro": [ + "Pon a prueba lo que has aprendido sobre Typescript con este cuestionario." + ] }, "review-front-end-libraries": { - "title": "Front End Libraries Review", + "title": "Revisión de bibliotecas de interfaz de usuario", "intro": [ - "Review the Front End Libraries concepts to prepare for the upcoming quiz." + "Revise los conceptos de las bibliotecas front-end para prepararse para el próximo examen." ] }, "rdzk": { @@ -4507,7 +4545,7 @@ ] }, "lab-rpg-character": { - "title": "Build an RPG character", + "title": "Build an RPG Character", "intro": [ "In this lab you will practice basic python by building an RPG character." ] @@ -4896,21 +4934,23 @@ ] }, "workshop-bash-boilerplate": { - "title": "Build a Boilerplate", + "title": "Construir un texto estándar", "intro": [ - "The terminal allows you to send text commands to your computer that can manipulate the file system, run programs, automate tasks, and much more.", - "In this 170-lesson workshop, you will learn terminal commands by creating a website boilerplate using only the command line." + "La terminal le permite enviar comandos de texto a su computadora que pueden manipular el sistema de archivos, ejecutar programas, automatizar tareas y mucho más.", + "En este taller de 170 lecciones, aprenderá comandos de terminal creando un código repetitivo de sitio web usando solo la línea de comandos." ] }, "review-bash-commands": { - "title": "Bash Commands Review", + "title": "Revisión de comandos Bash", "intro": [ - "Review the Bash Commands concepts to prepare for the upcoming quiz." + "Revise los conceptos de los comandos Bash para prepararse para el próximo examen." ] }, "quiz-bash-commands": { - "title": "Bash Commands Quiz", - "intro": ["Test what you've learned bash commands with this quiz."] + "title": "Cuestionario sobre comandos Bash", + "intro": [ + "Pon a prueba lo que has aprendido sobre los comandos bash con este cuestionario." + ] }, "lecture-working-with-relational-databases": { "title": "Working with Relational Databases", @@ -4926,9 +4966,9 @@ ] }, "lab-celestial-bodies-database": { - "title": "Build a Celestial Bodies Database", + "title": "Construir una base de datos de cuerpos celestes", "intro": [ - "For this project, you will build a database of celestial bodies using PostgreSQL." + "Para este proyecto, construirá una base de datos de cuerpos celestes utilizando PostgreSQL." ] }, "review-sql-and-postgresql": { @@ -4948,21 +4988,23 @@ "intro": ["Learn about Bash Scripting in these lessons."] }, "workshop-bash-five-programs": { - "title": "Build Five Programs", + "title": "Construir cinco programas", "intro": [ - "Bash scripts combine terminal commands and logic into programs that can execute or automate tasks, and much more.", - "In this 220-lesson workshop, you will learn more terminal commands and how to use them within Bash scripts by creating five small programs." + "Los scripts Bash combinan comandos de terminal y lógica en programas que pueden ejecutar o automatizar tareas y mucho más.", + "En este taller de 220 lecciones, aprenderá más comandos de terminal y cómo usarlos dentro de scripts Bash creando cinco programas pequeños." ] }, "review-bash-scripting": { - "title": "Bash Scripting Review", + "title": "Revisión de scripts de Bash", "intro": [ - "Review the bash scripting concepts you've learned to prepare for the upcoming quiz." + "Revise los conceptos de scripts de bash que ha aprendido para prepararse para el próximo examen." ] }, "quiz-bash-scripting": { - "title": "Bash Scripting Quiz", - "intro": ["Test what you've learned on bash scripting in this quiz."] + "title": "Cuestionario sobre scripts en Bash", + "intro": [ + "Pon a prueba lo que has aprendido sobre scripts de bash en este cuestionario" + ] }, "lecture-working-with-sql": { "title": "Working With SQL", @@ -4971,63 +5013,65 @@ ] }, "workshop-sql-student-database-part-1": { - "title": "Build a Student Database: Part 1", + "title": "Crear una base de datos de estudiantes: Parte 1", "intro": [ - "SQL, or Structured Query Language, is the language for communicating with a relational database.", - "In this 140-lesson workshop, you will create a Bash script that uses SQL to enter information about your computer science students into PostgreSQL." + "SQL, o lenguaje de consulta estructurado, es el lenguaje para comunicarse con una base de datos relacional.", + "En este taller de 140 lecciones, creará un script Bash que usa SQL para ingresar información sobre sus estudiantes de informática en PostgreSQL." ] }, "workshop-sql-student-database-part-2": { - "title": "Build a Student Database: Part 2", + "title": "Construir una base de datos de estudiantes: Parte 2", "intro": [ - "SQL join commands are used to combine information from multiple tables in a relational database", - "In this 140-lesson workshop, you will complete your student database while diving deeper into SQL commands." + "Los comandos de unión SQL se utilizan para combinar información de varias tablas en una base de datos relacional", + "En este taller de 140 lecciones, completará su base de datos de estudiantes mientras profundiza en los comandos SQL." ] }, "lab-world-cup-database": { - "title": "Build a World Cup Database", + "title": "Crear una base de datos de la Copa del Mundo", "intro": [ - "For this project, you will create a Bash script that enters information from World Cup games into PostgreSQL, then query the database for useful statistics." + "Para este proyecto, creará un script Bash que ingrese información de los juegos de la Copa del Mundo en PostgreSQL y luego consultará la base de datos para obtener estadísticas útiles." ] }, "workshop-kitty-ipsum-translator": { - "title": "Build a Kitty Ipsum Translator", + "title": "Construya un traductor Kitty Ipsum", "intro": [ - "There's more to Bash commands than you might think.", - "In this 140-lesson workshop, you will learn some more complex commands, and the details of how commands work." + "Los comandos Bash implican mucho más de lo que te imaginas.", + "En este taller de 140 lecciones, aprenderá algunos comandos más complejos y los detalles de cómo funcionan los comandos." ] }, "workshop-bike-rental-shop": { - "title": "Build a Bike Rental Shop", + "title": "Construir una tienda de alquiler de bicicletas", "intro": [ - "In this 210-lesson workshop, you will build an interactive Bash program that stores rental information for your bike rental shop using PostgreSQL." + "En este taller de 210 lecciones, creará un programa Bash interactivo que almacena información de alquiler para su tienda de alquiler de bicicletas utilizando PostgreSQL." ] }, "lab-salon-appointment-scheduler": { - "title": "Build a Salon Appointment Scheduler", + "title": "Cree un programador de citas para el salón", "intro": [ - "For this lab, you will create an interactive Bash program that uses PostgreSQL to track the customers and appointments for your salon." + "Para este laboratorio, creará un programa Bash interactivo que utiliza PostgreSQL para realizar un seguimiento de los clientes y las citas de su salón." ] }, "review-bash-and-sql": { - "title": "Bash and SQL Review", + "title": "Revisión de Bash y SQL", "intro": [ - "Review the Bash and SQL concepts to prepare for the upcoming quiz." + "Revise los conceptos de Bash y SQL para prepararse para el próximo examen." ] }, "quiz-bash-and-sql": { - "title": "Bash and SQL Quiz", - "intro": ["Test what you've learned in this quiz on Bash and SQL."] + "title": "Cuestionario sobre Bash y SQL", + "intro": [ + "Pon a prueba lo que has aprendido en este cuestionario sobre Bash y SQL" + ] }, "lecture-working-with-nano": { "title": "Working With Nano", "intro": ["Learn about Nano in this lesson."] }, "workshop-castle": { - "title": "Build a Castle", + "title": "Construir un castillo", "intro": [ - "Nano is a program that allows you to edit files right in the terminal.", - "In this 40-lesson workshop, you will learn how to edit files in the terminal with Nano while building a castle." + "Nano es un programa que te permite editar archivos directamente en la terminal.", + "En este taller de 40 lecciones, aprenderá a editar archivos en la terminal con Nano mientras construye un castillo." ] }, "lecture-introduction-to-git-and-github": { @@ -5041,34 +5085,38 @@ ] }, "workshop-sql-reference-object": { - "title": "Build an SQL Reference Object", + "title": "Crear un objeto de referencia SQL", "intro": [ - "Git is a version control system that keeps track of all the changes you make to your codebase.", - "In this 240-lesson workshop, you will learn how Git keeps track of your code by creating an object containing commonly used SQL commands." + "Git es un sistema de control de versiones que realiza un seguimiento de todos los cambios que realiza en su base de código.", + "En este taller de 240 lecciones, aprenderá cómo Git realiza un seguimiento de su código al crear un objeto que contiene comandos SQL de uso común." ] }, "lab-periodic-table-database": { - "title": "Build a Periodic Table Database", + "title": "Construir una base de datos de la tabla periódica", "intro": [ - "For this lab, you will create a Bash script to get information about chemical elements from a periodic table database." + "Para este laboratorio, creará un script Bash para obtener información sobre elementos químicos de una base de datos de tabla periódica." ] }, "lab-number-guessing-game": { - "title": "Build a Number Guessing Game", + "title": "Construye un juego de adivinanzas de números", "intro": [ - "For this lab, you will use Bash scripting, PostgreSQL, and Git to create a number guessing game that runs in the terminal and saves user information." + "En este laboratorio, utilizará scripts de Bash, PostgreSQL y Git para crear un juego de adivinanzas de números que se ejecuta en la terminal y guarda la información del usuario." ] }, "review-git": { - "title": "Git Review", - "intro": ["Review Git concepts to prepare for the upcoming quiz."] + "title": "Revisión de Git", + "intro": [ + "Revise los conceptos de Git para prepararse para el próximo examen." + ] }, "quiz-git": { - "title": "Git Quiz", - "intro": ["Test what you've learned on Git with this quiz."] + "title": "Quiz de Git", + "intro": [ + "Pon a prueba lo que has aprendido sobre Git con este cuestionario." + ] }, "review-relational-databases": { - "title": "Relational Databases Review", + "title": "Reviso en base de datos relacionales", "intro": [ "Review relational databases concepts to prepare for the exam." ] @@ -5080,8 +5128,10 @@ ] }, "exam-certified-full-stack-developer": { - "title": "Certified Full Stack Developer Exam", - "intro": ["Pass this exam to become a Certified Full Stack Developer."] + "title": "Examen de desarollador Full-Stack certificado", + "intro": [ + "Pasa este examen para volverse en un desarrollador Full-Stack certificado." + ] } } }, @@ -7528,8 +7578,14 @@ }, "a1-professional-spanish": { "title": "A1 Professional Spanish Certification (Beta)", - "note": "This certification is currently in active development. While there isn't a claimable certification available for this section at the moment, one will be available soon. In the meantime, you're welcome to explore the courses we have created below.", - "intro": ["Placeholder intro"], + "note": "This certification is currently in active development. We are currently publishing the first three chapters, and future chapters will be released as they are developed by our instructional design team. Once all the chapters are available, we will release the certification exam.", + "intro": [ + "This course teaches you the fundamentals of Spanish at the A1 level of the Common European Framework of Reference (CEFR), with lessons focused on professional settings. Each module is broken down into sections:", + "- A Warm-up section for quick review.", + "- Learn sections with new vocabulary and grammar.", + "- Practice sections to check your comprehension and writing skills.", + "- A Review section with key grammar and vocabulary." + ], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", "es-a1-chapter-spanish-fundamentals": "Spanish Fundamentals", @@ -7745,6 +7801,7 @@ "chapters": { "html": "HTML", "css": "CSS", + "computers": "Computers", "responsive-web-design-certification-exam": "Responsive Web Design Certification Exam" }, "modules": { @@ -9077,33 +9134,33 @@ "part-9": "TypeScript", "part-10": "React Native", "part-11": "CI/CD", - "part-12": "Containers", - "part-13": "Using Relational Databases" + "part-12": "Contenedores", + "part-13": "Utilizando bases de datos relacionales" }, "modules": { - "basic-html": "Basic HTML" + "basic-html": "HTML básico" }, "module-intros": { "basic-html": { - "title": "Basic HTML", + "title": "HTML básico", "intro": [ - "Learn how to build simple webpages using HTML tags to add text, images, and links." + "Aprende cómo construir páginas web simples usando etiquetas HTML para agregar texto, imágenes y enlaces." ] } } }, "daily-coding-challenge": { - "title": "Daily Coding Challenge", + "title": "Desafío de codificación diario", "blocks": { "daily-coding-challenge": { - "title": "Daily Coding Challenge" + "title": "Desafío de codificación diario" } } }, "misc-text": { - "browse-other": "Browse our other free certifications", + "browse-other": "Explora nuestras otras certificaciones gratuitas", "courses": "Cursos", - "requirements": "Requirements", + "requirements": "Requisitos", "steps": "Pasos", "expand": "Expandir cursos", "collapse": "Contraer curso", diff --git a/client/i18n/locales/espanol/translations.json b/client/i18n/locales/espanol/translations.json index c687dd26e2bb21..4520330dd998d0 100644 --- a/client/i18n/locales/espanol/translations.json +++ b/client/i18n/locales/espanol/translations.json @@ -7,9 +7,9 @@ "first-lesson": "Ir a la primera lección", "close": "Cerrar", "edit": "Editar", - "copy": "Copy", + "copy": "Copiar", "view": "Ver", - "submit-continue": "Submit and continue", + "submit-continue": "Enviar y continuar", "view-code": "Mostrar Código", "view-project": "Mostrar Proyecto", "view-cert-title": "Ver {{certTitle}}", @@ -38,7 +38,7 @@ "news": "Noticias", "donate": "Donar", "supporters": "Colaboradores", - "exam-app": "Exam App", + "exam-app": "Aplicación de examen", "go-to-supporters": "Ir a la Página para Colaboradores", "update-settings": "Actualizar los ajustes de mi cuenta", "sign-me-out": "Cerrar sesión en freeCodeCamp", @@ -55,13 +55,13 @@ "create-post": "Crear un post de ayuda en el foro", "cancel": "Cancelar", "reset-lesson": "Restablecer esta lección", - "revert": "Revert", - "revert-to-saved-code": "Revert to Saved Code", + "revert": "Revertir", + "revert-to-saved-code": "Revertir al código guardado", "run": "Ejecutar", "run-test": "Ejecutar las Pruebas (Ctrl + Entrar)", - "check-code": "Check Your Code", - "check-code-ctrl": "Check Your Code (Ctrl + Enter)", - "check-code-cmd": "Check Your Code (Command + Enter)", + "check-code": "Comprueba tu código", + "check-code-ctrl": "Comprueba tu código (Ctrl + Enter)", + "check-code-cmd": "Comprueba tu código (Command + Enter)", "command-enter": "⌘ + Enter", "ctrl-enter": "Ctrl + Enter", "reset": "Restablecer", @@ -73,24 +73,24 @@ "click-here": "Haz clic aquí para iniciar sesión", "save": "Guardar", "save-code": "Guarda tu código", - "show-demo": "Show Demo", + "show-demo": "Mostrar Demo", "no-thanks": "No, Gracias", "yes-please": "Sí, por favor", "update-email": "Actualizar mi correo electrónico", "verify-email": "Verificar correo electrónico", "submit-and-go": "Enviar y pasar al siguiente desafío", - "submit-and-go-ctrl": "Submit and go to next challenge (Ctrl + Enter)", - "submit-and-go-cmd": "Submit and go to next challenge (Command + Enter)", + "submit-and-go-ctrl": "Enviar e ir al siguiente desafío (Ctrl + Enter)", + "submit-and-go-cmd": "Enviar e ir al siguiente desafío (Command + Enter)", "go-to-next": "Ir al próximo desafío", - "go-to-next-ctrl": "Go to next challenge (Ctrl + Enter)", - "go-to-next-cmd": "Go to next challenge (Command + Enter)", + "go-to-next-ctrl": "Ir al siguiente desafío (Ctrl + Enter)", + "go-to-next-cmd": "Ir al siguiente desafío (Command + Enter)", "ask-later": "Pregúntame luego", "start-coding": "¡Empieza a programar!", "go-to-settings": "Ve a la configuración para reclamar tu certificación", "click-start-course": "Comienza el curso", "click-start-project": "Comienza el proyecto", "click-start-exam": "Iniciar el examen", - "go-to-course": "Go to course", + "go-to-course": "Ir al curso", "change-language": "Cambiar Idioma", "resume-project": "Reanudar proyecto", "start-project": "Iniciar proyecto", @@ -101,8 +101,8 @@ "exit": "Salir", "finish-exam": "Finalizar el examen", "finish": "Terminar", - "exit-quiz": "Exit the quiz", - "finish-quiz": "Finish the quiz", + "exit-quiz": "Salir del cuestionario", + "finish-quiz": "Terminar el cuestionario", "submit-exam-results": "Enviar mis resultados", "verify-trophy": "Verificar trofeo", "link-account": "Conectar Cuenta", @@ -110,111 +110,111 @@ "update-card": "Actualiza tu tarjeta", "donate-now": "Donar ahora", "confirm-amount": "Confirmar cantidad", - "play": "Play Video", - "pause": "Pause Video", + "play": "Reproducir video", + "pause": "Pausar video", "closed-caption": "Subtítulos cerrados", - "share-on-x": "Share on X", - "share-on-bluesky": "Share on BlueSky", - "share-on-threads": "Share on Threads", - "play-scene": "Press Play", - "download-latest-version": "Download the Latest Version", - "more-ways-to-sign-in": "More ways to sign in", - "sign-in-with-google": "Sign in with Google", - "go-to-dcc-today": "Go to Today's Challenge", - "go-to-dcc-archive": "Go to Daily Coding Challenge Archive" + "share-on-x": "Compartir en X", + "share-on-bluesky": "Compartir en BlueSky", + "share-on-threads": "Compartir en Threads", + "play-scene": "Presione Play", + "download-latest-version": "Descargue la última versión", + "more-ways-to-sign-in": "Más formas de iniciar sesión", + "sign-in-with-google": "Iniciar sesión con Google", + "go-to-dcc-today": "Ir al desafío de hoy", + "go-to-dcc-archive": "Ir al archivo de desafíos" }, "daily-coding-challenges": { - "title": "Daily Coding Challenges", - "map-title": "Try the coding challenge of the day:", - "not-found": "Daily Coding Challenge Not Found.", - "release-note": "New challenges are released at midnight US Central time." + "title": "Coding Challenge Díario", + "map-title": "Prueba el Coding Challenge del día", + "not-found": "Desafío Coding Challenge no encontrado.", + "release-note": "Los nuevos desafíos se publican a medianoche US" }, "weekdays": { "short": { - "sunday": "S", - "monday": "M", - "tuesday": "T", - "wednesday": "W", - "thursday": "T", - "friday": "F", - "saturday": "S" + "sunday": "Sab", + "monday": "Lun", + "tuesday": "Mar", + "wednesday": "Mier", + "thursday": "Juev", + "friday": "Vier", + "saturday": "Sab" }, "long": { - "sunday": "Sunday", - "monday": "Monday", - "tuesday": "Tuesday", - "wednesday": "Wednesday", - "thursday": "Thursday", - "friday": "Friday", - "saturday": "Saturday" + "sunday": "Dom", + "monday": "Lunes", + "tuesday": "Martes", + "wednesday": "Miércoles", + "thursday": "Jueves", + "friday": "Viernes", + "saturday": "Sabado" } }, "landing": { "big-heading-1": "Aprende a programar gratis.", "big-heading-2": "Construye proyectos.", - "big-heading-1-b": "Build Your Skills for Free.", + "big-heading-1-b": "Construye Tus Habilidades gratis.", "big-heading-3": "Obtén certificaciones.", - "advance-career": "Advance your career by learning in-demand skills in Programming, DevOps, Cybersecurity, AI Engineering, and English for Developers.", - "h2-heading": "More than 100,000 freeCodeCamp.org graduates have gotten jobs at tech companies including:", - "graduates-work": "More than 100,000 freeCodeCamp graduates work in companies such as", + "advance-career": "Avanza tu carrera aprendiendo habilidades cotizadas en Programación, DevOps, Ciberseguridad, Ingenieria IA, e Inglés para Desarrolladores.", + "h2-heading": "Más de 100.000 graduados de freeCodeCamp.org han conseguido trabajos en empresas tecnológicas, entre ellas:", + "graduates-work": "Más de 100.000 graduados de freeCodeCamp trabajan en comañias como", "hero-img-description": "Estudiantes de freeCodeCamp en un grupo de estudio local en Corea del Sur.", "hero-img-alt": "Un grupo de personas, incluyendo un hombre blanco, una mujer negra y una mujer asiática, reunidos alrededor de un portátil.", - "hero-img-uis": "A group of screenshots showing the freeCodeCamp editor interface on both a mobile and desktop device and a certification.", + "hero-img-uis": "Un grupo de capturas de pantalla que muestran el editor de freeCodeCamp en intarfaces de dispositivo móvil y escritorio, y una certificación.", "as-seen-in": "Como se ha visto en:", "testimonials": { "heading": "Esto es lo que dicen nuestros alumnos sobre freeCodeCamp:", "shawn": { - "img-alt": "Shawn Wang, a young-looking Asian man, smiling for a selfie with a snow-capped mountain in the background.", + "img-alt": "Shawn Wang, un apuesto joven Asistico, sonrie para una selfie con una montaña cubierta de nieve en el fondo.", "location": "Shawn Wang en Singapur", "occupation": "Ingeniero de Software en Amazon", "testimony": "\"Da miedo cambiar de carrera. Solo gané la confianza de que podía programar trabajando a través de los cientos de horas de lecciones gratuitas en freeCodeCamp. Dentro de un año tuve un trabajo de seis cifras como ingeniero de software. freeCodeCamp cambió mi vida.\"" }, "sarah": { - "img-alt": "Sarah Chima, a young-looking Black woman, smiling for the camera while sitting in a chair.", + "img-alt": "Sarah Chima, una mujer Negra de aspecto joven, sonriendo para la cámara mientras está sentada en una silla.", "location": "Sarah Chima en Nigeria", "occupation": "Ingeniera de Software en ChatDesk", "testimony": "\"freeCodeCamp fue la puerta de entrada a mi carrera como desarrollador de software. El plan de estudios bien estructurado llevó mis conocimientos de programación de un nivel de principiante total a un nivel muy seguro. Era todo lo que necesitaba para conseguir mi primer trabajo de desarrollador en una empresa increíble.\"" }, "emma": { - "img-alt": "Emma Bostian, a young-looking White woman, smiling for the camera in front of green foliage.", + "img-alt": "Emma Bostian, una mujer Blanca de aspecto joven, sonriendo para la cámara en frente de un follaje verde.", "location": "Emma Bostian en Suecia", "occupation": "Ingeniera de Software en Spotify", "testimony": "\"Siempre he tenido problemas para aprender JavaScript. He tomado muchos cursos, pero el curso de freeCodeCamp fue el que se quedó. Estudiar JavaScript, así como estructuras de datos y algoritmos en freeCodeCamp me dio las habilidades y la confianza que necesitaba para conseguir el trabajo de mis sueños como ingeniero de software en Spotify.\"" } }, "benefits": { - "heading": "Why learn with freeCodeCamp:", + "heading": "Por qué aprender con freeCodeCamp:", "list": [ { - "title": "Large Community", - "description": "Join our vibrant learning community of students, alumni, and educators." + "title": "Comunidad grande", + "description": "Únete a nuestra comunidad de aprendizaje vibrantes compuesta de estudiantes, ex alumnos y educadores." }, { - "title": "Free Education", - "description": "Learn from our charity and save money on your education. This is made possible by the generous support of our monthly donors." + "title": "Educación gratuita", + "description": "Aprende de nuestra organización benéfica y ahorra dinero en tu educación. Esto es posible gracias al generoso apoyo de nuestros donantes mensuales." }, { - "title": "Extensive Certifications", - "description": "Earn industry-recognized, verifiable certifications in high-demand technologies." + "title": "Certificaciones extensas", + "description": "Obten certificaciones verificables y reconocidas por la industria en tecnologías de alta demanda." }, { - "title": "Comprehensive Curriculum", - "description": "Enhance your technical skills with our linear, world-class, project-based curriculum." + "title": "Currículo integral", + "description": "Mejore sus habilidades técnicas con nuestro plan de estudios lineal, de clase mundial y basado en proyectos." } ], - "cta": "Start Learning Now (it's free)" + "cta": "Comienza a aprender ahora (es gratis)" }, "certification-heading": "Obtén certificaciones verificadas gratuitas en:", - "core-certs-heading": "Recommended curriculum (still in beta):", + "core-certs-heading": "Programa de estudios recomendado (aún en beta):", "learn-english-heading": "Aprende Inglés para Desarolladores:", - "professional-certs-heading": "Professional certifications:", + "professional-certs-heading": "Certificaciones profesionales:", "interview-prep-heading": "Prepárate para la búsqueda de empleo en la entrevista de desarrollador:", - "legacy-curriculum-heading": "Our archived coursework:", - "next-heading": "Try our beta curriculum:", + "legacy-curriculum-heading": "Nuestros cursos archivados:", + "next-heading": "Pruebe nuestro plan de estudios beta:", "upcoming-heading": "Próximo plan de estudio:", - "catalog-heading": "Explore our Catalog:", - "fsd-restructure-note": "If you were previously working through our Certified Full Stack Developer curriculum, don't worry - your progress is saved. We've split it into smaller certifications you can earn along your journey.", - "archive-link": "Looking for older coursework? Check out <0>our archive page.", + "catalog-heading": "Explora nuestro Catálogo:", + "fsd-restructure-note": "Si estabas trabajando previamente en nuestro currículo de Desarrollador Full Stack Certificado, no te preocupes: tu progreso está guardado. Lo hemos dividido en certificaciones más pequeñas que puedes obtener a lo largo de tu recorrido.", + "archive-link": "¿Buscas cursos antiguos? Consulta <0>nuestra página de archivo.", "faq": "Preguntas frecuentes:", "faqs": [ { @@ -281,12 +281,12 @@ "disabled": "Tus certificaciones se deshabilitarán si se configuran como privadas.", "private-name": "Tu nombre no aparecerá en tus certificaciones, si está establecido como privado.", "claim-legacy": "Una vez que hayas obtenido las siguientes certificaciones de FreeCodeCamp, podrás reclamar la {{cert}}:", - "for": "Ajustes de cuenta de {{username}}", + "for": "Ajustes para {{username}}", "sound-mode": "Esto agrega un placentero sonido de guitarra acústica en todo el sitio web. Obtendrás reacciones musicales a medida que escribas en el editor, completes desafíos, obtengas certificados y mucho más.", "sound-volume": "Volumen de fogata:", "scrollbar-width": "Ancho de la barra de desplazamiento", - "reset-editor-layout-tooltip": "Reset the editor layout to its default state", - "reset-editor-layout": "Reset Editor Layout", + "reset-editor-layout-tooltip": "Restablecer el diseño del editor a su estado predeterminado", + "reset-editor-layout": "Restablecer el diseño del editor", "shortcuts-explained": "Dentro de un desafío, pulse ESC seguido del signo de interrogación para mostrar una lista de atajos disponibles.", "username": { "contains invalid characters": "El nombre de usuario \"{{username}}\" contiene caracteres inválidos", @@ -315,7 +315,7 @@ "results-for": "Resultados para {{projectTitle}}", "my-profile": "Mi perfil", "my-name": "Mi nombre", - "my-location": "Mi ubicación", + "my-location": "Mi ubicación declarada (freeCodeCamp no rastrea tu ubicación real)", "my-about": "Mi acerca de", "my-points": "Mis puntos", "my-heatmap": "Mi mapa de calor", @@ -328,12 +328,13 @@ "keyboard-shortcuts": "Habilitar atajos de teclado" }, "headings": { + "account": "Cuenta", "certs": "Certificaciones", "legacy-certs": "Certificaciones de legado", "honesty": "Política de Honestidad Académica", "internet": "Tu presencia en Internet", "portfolio": "Ajustes de portafolio", - "privacy": "Ajustes de privacidad", + "privacy": "Privacidad", "personal-info": "Información Personal" }, "danger": { @@ -356,13 +357,13 @@ "reset-p3": "No podremos recuperar nada de esto más adelante, incluso si cambias de opinión.", "nevermind-2": "Cambié de opinión, no quiero eliminar todo mi progreso", "reset-confirm": "Restablecer todo. Quiero empezar desde el principio", - "verify-text": "To verify, type \"{{ verifyText }}\" below:", - "verify-reset-text": "I agree that all progress will be lost", - "verify-delete-text": "I agree to delete my account" + "verify-text": "Para verificar, escribe \"{{ verifyText }}\" a continuación:", + "verify-reset-text": "Estoy de acuerdo en que se perderá todo el progreso", + "verify-delete-text": "Acepto eliminar mi cuenta" }, "email": { "missing": "No tienes un correo electrónico asociado a esta cuenta.", - "heading": "Ajustes de correo electrónico", + "heading": "Correo electrónico", "not-verified": "Tu correo electrónico no ha sido verificado.", "check": "Por favor, comprueba tu correo electrónico o <0>solicita un nuevo correo de verificación aquí.", "current": "Correo electrónico actual", @@ -381,23 +382,23 @@ } }, "exam": { - "attempts": "Attempts", - "no-attempts-yet": "No attempts yet", - "date-taken": "Date Taken", - "score": "Score", - "status": "Status", - "pending": "Pending", - "passed": "Passed", - "failed": "Failed", - "in-progress": "In Progress", - "denied": "Retake Required", - "download-header": "Download the freeCodeCamp Exam Environment App", - "explanation": "To earn a certification, you must take an exam to test your understanding of the material you have learned. Taking the exam is absolutely free of charge.", - "version": "The latest version of our app is: {{version}}.", - "download-details": "Manually download the app", - "unable-to-detect-os": "We were unable to detect your operating system. Please manually download the app below.", - "download-trouble": "If you have trouble downloading the correct version, do not hesitate to contact support:", - "open-exam-application": "Open Exam Environment Application" + "attempts": "Intentos", + "no-attempts-yet": "Aún no hay intentos", + "date-taken": "Fecha tomada", + "score": "Puntuación", + "status": "Estado", + "pending": "Pendiente", + "passed": "Aprobado", + "failed": "Suspendido", + "in-progress": "En curso", + "denied": "Repetir requerido", + "download-header": "Descargue la aplicación de examenes de freeCodeCamp", + "explanation": "Para obtener una certificación, debe tomar un examen para probar su comprensión del material aprendido. Tomar el examen es absolutamente gratuito.", + "version": "La última versión de nuestra aplicación es: {{version}}", + "download-details": "Descargar manualmente la aplicación", + "unable-to-detect-os": "No hemos podido detectar tu sistema operativo. Por favor, descarga manualmente la aplicación", + "download-trouble": "Si tiene problemas para descargar la versión correcta, no dude en contactar a soporte", + "open-exam-application": "Abrir aplicación de entorno de examen" }, "profile": { "you-change-privacy": "Debes cambiar tus ajustes de privacidad para que otros puedan ver tu portafolio. Esta es una vista previa de cómo se verá tu portafolio cuando se haga público.", @@ -414,25 +415,25 @@ "donated": "Donado a la comunidad", "projects": "Proyectos", "stats": "Estadísticas", - "activity": "Activity", + "activity": "Actividad", "timeline": "Cronología", "none-completed": "Aún no se han completado desafíos.", "get-started": "Empieza aquí.", "challenge": "Desafío", "completed": "Completado", "add-linkedin": "Agregar esta certificación a mi perfil de LinkedIn", - "add-twitter": "Share this certification on X", + "add-twitter": "Comparte esta certificacion en X", "tweet": "¡Acabo de obtener la certificación {{certTitle}} @freeCodeCamp! Compruébalo aquí: {{certURL}}", "avatar": "Avatar de {{username}}", "joined": "Se unió {{date}}", "from": "Desde {{location}}", "total-points": "Puntos en total:", - "points_one": "{{count}} point on {{date}}", - "points_other": "{{count}} points on {{date}}", + "points_one": "{{count}} punto en {{date}}", + "points_other": "{{count}} puntos en {{date}}", "page-number": "{{pageNumber}} de {{totalPages}}", - "edit-my-profile": "Edit My Profile", - "add-bluesky": "Share this certification on BlueSky", - "add-threads": "Share this certification on Threads" + "edit-my-profile": "Editar mi perfil", + "add-bluesky": "Comparte esta certificacion en BlueSky", + "add-threads": "Comparte esta certificacion en Threads" }, "footer": { "tax-exempt-status": "freeCodeCamp es una organización 501(c)(3) exenta de impuestos y sin fines de lucro respaldada por donaciones (Número de Identificación Tributaria Federal de los Estados Unidos: 82-0779546).", @@ -463,41 +464,41 @@ "welcome-1": "Bienvenido de nuevo, {{name}}.", "welcome-2": "Bienvenido a freeCodeCamp.org", "start-at-beginning": "Si eres nuevo en la programación, te recomendamos <0>comenzar desde el principio.", - "happy-coding": "Happy coding!", + "happy-coding": "¡Disfruta programando!", "upcoming-lessons": "Próximas lecciones", "learn": "Aprende", "add-subtitles": "Ayudar a mejorar o agregar subtítulos", "wrong-answer": "Lo siento, esa no es la respuesta correcta. ¡Vuelve a intentarlo!", "check-answer": "Haz clic en el botón de abajo para verificar tu respuesta.", - "assignment-not-complete_one": "Please complete the assignment", - "assignment-not-complete_other": "Please complete the assignments", - "assignments_one": "Assignment", - "assignments_other": "Assignments", + "assignment-not-complete_one": "Por favor, complete la asignación", + "assignment-not-complete_other": "Por favor, complete las tareas", + "assignments_one": "Asigna", + "assignments_other": "Tareas", "question": "Pregunta", - "questions": "Questions", - "answered-mcq": "You have unanswered questions and/or incorrect answers.", - "explanation": "Explanation", - "transcript": "Transcript", + "questions": "Preguntas", + "answered-mcq": "Tiene preguntas sin respuesta y/o respuestas incorrectas.", + "explanation": "Explicacion", + "transcript": "Transcribir", "solution-link": "Enlace a la solución", "source-code-link": "Enlace al código fuente", "ms-link": "Link de Microsoft", "submit-and-go": "Enviar y pasar a mi siguiente desafío", "congratulations": "Felicidades, tu código ha sido aprobado. Envía tu código para continuar.", - "congratulations-code-passes": "✔ Congratulations. Your code passes.", + "congratulations-code-passes": "Felicidades!!! Tu código pasa", "i-completed": "He completado este desafío", "example-code": "Código de ejemplo", "test-output": "El resultado de tu prueba irá aquí", "running-tests": "// ejecutando pruebas", "tests-completed": "// pruebas completadas", "console-output": "// salida de consola", - "example-app": "Build an app that is functionally similar to <0>this example project. Try not to copy the example project, give it your own personal style.", + "example-app": "Construye una aplicación que sea funcionalmente similar a <0>este es el proyecto de ejemplo. Intenta no copiar el proyecto de ejemplo, dale tu propio estilo personal.", "syntax-error": "Tu código provocó un error antes de que se pudieran ejecutar las pruebas. Por favor, corrígelo y vuelve a intentarlo.", "indentation-error": "Tu código tiene un error de identación. Puede que necesites añadir pass en una nueva línea para formar un bloque de código válido.", "sign-in-save": "Inicia sesión para guardar tu progreso", "download-solution": "Descargar mi solución", "download-results": "Descargar mis resultados", "percent-complete": "{{percent}}% completo", - "project-complete": "Completed", + "project-complete": "Completado", "tried-rsa": "Si ya has probado el método <0>Leer-Buscar-Preguntar, entonces puedes pedir ayuda en el foro de freeCodeCamp.", "read-search-ask-checkbox": "He probado el método <0>Leer-Buscar-Preguntar", "similar-questions-checkbox": "He buscado <0>preguntas similares que ya han sido contestadas en el foro", @@ -508,9 +509,9 @@ "rsa": "Leer, buscar, preguntar", "rsa-forum": "Antes de hacer una nueva publicación por favor <0>comprueba si tu pregunta ya ha sido respondida en el foro.", "reset": "¿Restablecer esta lección?", - "reset-warn": "Are you sure you wish to reset this lesson ({{title}})? The code editors and tests will be reset.", - "reset-warn-2": "This cannot be undone.", - "revert-warn": "Are you sure you wish to revert this lesson? Your latest changes will be undone and the code reverted to the most recently saved version.", + "reset-warn": "¿Estás seguro de que deseas reiniciar esta lección ({{title}})? Los editores de código y las pruebas se restablecerán.", + "reset-warn-2": "Esto no se puede deshacer.", + "revert-warn": "¿Estás seguro de que quieres revertir esta lección? Se desharán tus últimos cambios y se revertirá el código a la versión guardada más recientemente.", "scrimba-tip": "Sugerencia: Si el mini-navegador cubre el código, haz clic y arrastra para moverlo. Además, siéntete libre de detener y editar el código en el video en cualquier momento.", "chal-preview": "Vista previa del desafío", "donation-record-not-found": "No se ha encontrado tu historial de donaciones.", @@ -530,7 +531,7 @@ "preview": "Vista", "terminal": "Terminal", "editor": "Editor", - "interactive-editor": "Interactive Editor" + "interactive-editor": "Editor Interactivo" }, "editor-alerts": { "tab-trapped": "Presionando la pestaña insertará el carácter de la pestaña", @@ -539,69 +540,69 @@ "help-translate": "Todavía estamos traduciendo esta certifiación.", "help-translate-link": "Ayúdanos a traducir.", "project-preview-title": "Aquí hay una vista previa de lo que construirás", - "demo-project-title": "Here's an example of a project that meets the requirements", + "demo-project-title": "Este es un ejemplo de un proyecto que cumple con los requisitos", "github-required": "<0>Crea una cuenta en GitHub si no tienes una. Lo necesitará al crear la máquina virtual de servidores Linux, que puede tardar unos minutos.", "codespaces": { - "intro": "This course runs in a virtual Linux machine using GitHub Codespaces. Follow these instructions to start the course:", - "step-1": "<0>Create an GitHub account if you don't have one", - "step-2": "Click the start button below", - "step-3": "On that page, click the create button", - "step-4": "Once the virtual Linux machine is finished loading, start the CodeRoad extension by:", - "step-5": "Clicking the \"hamburger\" menu near the top left of the VSCode window,", - "step-6": "Going to the <0>View menu,", - "step-7": "Clicking on the <0>Command Palette option,", - "step-8": "and running the <0>CodeRoad: Start command", - "step-9": "Follow the instructions in CodeRoad to complete the course", - "continue-project": "Clicking the button below will start a new project. If you have previously started the {{title}} course, go to the <0>repository page to re-open a previous workspace.", - "learn-more": "Learn more about <0>Codespace workspaces.", - "logout-warning": "If you log out of freeCodeCamp before you complete the entire {{course}} course, your progress will not be saved to your freeCodeCamp account.", - "sub-step-3": "Navigate to your <0>Codespaces secrets page", - "sub-step-4": "Create a new secret named <0>CODEROAD_WEBHOOK_TOKEN", - "sub-step-5": "In the <0>Value field, paste your token", - "sub-step-6": "In the <0>Repository access field, select the <1>freeCodeCamp/rdb-alpha repository", - "summary": "Codespaces Setup" + "intro": "Este curso se ejecuta en una máquina virtual Linux usando GitHub Codespaces. Sigue estas instrucciones para iniciar el curso:", + "step-1": "<0>Crea una cuenta de GitHub si no tienes una", + "step-2": "Haz clic en el botón de inicio debajo", + "step-3": "En esa página, haz clic en el botón de crear", + "step-4": "Una vez que la máquina virtual Linux haya terminado de cargar, inicia la extensión CodeRoad mediante:", + "step-5": "Haciendo clic en el menú “hamburguesa” cerca de la parte superior izquierda de la ventana de VSCode,", + "step-6": "Yendo al menú <0>Ver,", + "step-7": "Haz clic en la opción <0>Paleta de comandos,", + "step-8": "y ejecuta el comando <0>CodeRoad: Start", + "step-9": "Sigue las instrucciones en CodeRoad para completar el curso", + "continue-project": "Haciendo clic abajo empezarás un nuevo proyecto. Si ya has comenzado el curso {{title}}, ve a la <0>página del repositorio para reabrir un espacio de trabajo anterior.", + "learn-more": "Aprende más sobre los <0>espacios de trabajo de Codespace.", + "logout-warning": "Si cierras sesión en freeCodeCamp antes de terminar el curso {{course}}, tu progreso no se guardará en tu cuenta de freeCodeCamp.", + "sub-step-3": "Navega a tu <0>página de secretos de Codespaces", + "sub-step-4": "Crea un nuevo secreto llamado <0>CODEROAD_WEBHOOK_TOKEN", + "sub-step-5": "Pega tu token en el campo <0>Valor", + "sub-step-6": "En el campo <0>Acceso al repositorio, selecciona el repositorio <1>freeCodeCamp/rdb-alpha", + "summary": "Configuración de Codespaces" }, "ona": { - "intro": "This course runs in a virtual Linux machine using Ona. Follow these instructions to start the course:", - "step-1": "<0>Create an Ona account if you don't have one", - "step-2": "Click the start button below", - "step-3": "In the modal that pops up, click the create button", - "step-4": "Once the virtual Linux machine is finished loading, start the CodeRoad extension by:", - "step-5": "Clicking the \"hamburger\" menu near the top left of the VSCode window,", - "step-6": "Going to the <0>View menu,", - "step-7": "Clicking on the <0>Command Palette option,", - "step-8": "and running the <0>CodeRoad: Start command", - "step-9": "Follow the instructions in CodeRoad to complete the course", - "continue-project": "Clicking the button below will start a new project. If you have previously started the {{course}} course, go to <0>your Ona dashboard to continue.", - "learn-more": "Learn more about <0>Ona workspaces.", - "logout-warning": "If you log out of freeCodeCamp before you complete the entire {{course}} course, your progress will not be saved to your freeCodeCamp account.", - "sub-step-3": "Navigate to your <0>Ona secrets page", - "sub-step-4": "Create a new secret named <0>CODEROAD_WEBHOOK_TOKEN", - "sub-step-5": "In the <0>Secret field, paste your token", - "summary": "Ona Setup" + "intro": "Este curso se ejecuta en una máquina virtual de Linux con Ona. Sigue estas instrucciones para comenzar:", + "step-1": "<0>Crea una cuenta Ona si no tienes una", + "step-2": "Haz clic en el botón de inicio debajo", + "step-3": "En el modal que aparece de repente, haz clic en el botón de crear", + "step-4": "Una vez el sistema linux virtual ha terminado de cargar, inicia la extensión CodeRoad mediante:", + "step-5": "Haciendo clic en el menú “hamburguesa” cerca de la parte superior izquierda de la ventana de VSCode", + "step-6": "Yendo al menú <0>Ver,", + "step-7": "Haz clic en la opción <0> Paleta de comandos,", + "step-8": "y ejecuta el comando <0>CodeRoad: Start", + "step-9": "Sigue las instrucciones en CodeRoad para completar el curso", + "continue-project": "Haciendo clic abajo empezarás un nuevo proyecto. Si ya has comenzado el curso {{course}}, accede a <0>tu panel de Ona para continuar.", + "learn-more": "Aprende más sobre <0>áreas de trabajo Ona.", + "logout-warning": "Si cierras sesión en freeCodeCamp antes de terminar el curso {{course}}, tu progreso no se guardará en tu cuenta.", + "sub-step-3": "Navega a tu <0>página secreta Ona", + "sub-step-4": "Crea un nuevo secreto llamado <0>CODEROAD_WEBHOOK_TOKEN", + "sub-step-5": "Pega tu token en el campo <0>Secreto", + "summary": "Configuración de Ona" }, "local": { - "intro": "This course runs in a virtual Linux machine on your computer. To run the course, you first need to download each of the following if you don't already have them:", - "download-vscode": "<0>VS Code and the <1>Dev Containers extension", - "heading": "Then, follow these instructions to start the course:", - "step-1": "Open a terminal and clone the RDB Alpha repo if you don't already have it with <0>git clone https://github.com/freeCodeCamp/rdb-alpha", - "step-2": "Navigate to the <0>rdb-alpha directory in the terminal with <1>cd rdb-alpha, and open VS Code with <2>code .", - "sub-step-heading": "If you want to save your progress to your freeCodeCamp account, do the following:", - "sub-step-1": "Generate a user token if you don't already have one:", - "generate-token-btn": "Generate User Token", - "sub-step-2": "Copy your user token:", - "copy-token-btn": "Copy User Token", - "logout-warning": "If you log out of freeCodeCamp before you complete the entire {{course}} course, your user token will be deleted and your progress will not be saved to your freeCodeCamp account.", - "sub-step-3": "In the VS Code that opened, find and open the file named <0>Dockerfile. At the bottom of the file, paste your token in as the value for the <1>CODEROAD_WEBHOOK_TOKEN variable. It should look like this: <2>ENV CODEROAD_WEBHOOK_TOKEN=your-token-here", - "step-3": "Open the command palette in VS Code by expanding the \"View\" menu and clicking \"Command Palette...\" and enter <0>Dev Containers: Rebuild and Reopen in Container in the input.", - "step-4": "A new VS Code window will open and begin building the Docker image. It will take several minutes the first time.", - "step-5": "Once it is finished building, open the command palette again and enter <0>CodeRoad: Start to open CodeRoad.", - "step-6": "In the CodeRoad window, click \"Start New Tutorial\" and then the \"URL\" tab at the top.", - "step-7": "Copy the course URL below, paste it in the URL input, and click \"Load\".", - "copy-url": "Copy Course URL", - "step-8": "Click \"Start\" to begin.", - "step-9": "Follow the instructions in CodeRoad to complete the course. Note: You may need to restart the terminal once for terminal settings to take effect and the tests to pass.", - "summary": "Local Setup" + "intro": "Este curso se ejecuta en una máquina virtual Linux de tu ordenador. Para ejecutar el curso, primero necesitas descargar cada uno de los siguientes si no los tienes todavía:", + "download-vscode": "<0>VS Code y la extensión <1>Dev Containers", + "heading": "Luego, sigue estas instrucciones para comenzar el curso:", + "step-1": "Abre un terminal y clona el repositorio RDB Alpha si aún no lo tienes con <0>git clone https://github.com/freeCodeCamp/rdb-alpha", + "step-2": "Vaya al directorio <0>rdb-alpha en el terminal con <1>cd rdb-alpha, y abra el VS code con <2>código.", + "sub-step-heading": "Si quieres guardar tu progreso en tu cuenta de freeCodeCamp, haz lo siguiente:", + "sub-step-1": "Generar un token de usuario si aún no tienes uno:", + "generate-token-btn": "Generar token de usuario", + "sub-step-2": "Copia tu token de usuario:", + "copy-token-btn": "Copiar token de usuario", + "logout-warning": "Si cierras la sesión de freeCodeCamp antes de completar el curso completo de {{course}}, tu progreso no se guardará en tu cuenta freeCodeCamp.", + "sub-step-3": "En el código VS que abrió, encuentra y abre el archivo llamado <0>Dockerfile. En la parte inferior del archivo, pegue su token como el valor de la variable <1>CODEROAD_WEBHOOK_TOKEN. Debería verse así: <2>ENV CODEROAD_WEBHOOK_TOKEN=su-token-aquí", + "step-3": "Abra la paleta de comandos en VS Code expandiendo el menú \"Vista\" y haciendo clic en \"Paleta de comandos...\" y entra <0>Contenedores Dev: Reconstruir y Reabrir en Contenedor en la entrada.", + "step-4": "Se abrirá una nueva ventana de VS Code y comenzará a construir la imagen de Docker. La primera vez tomará varios minutos.", + "step-5": "Una vez que termine de construirse, abre nuevamente la paleta de comandos y escribe <0>CodeRoad: Start para abrir CodeRoad.", + "step-6": "En la ventana de CodeRoad, haz clic en \"Start New Tutorial\" y luego en la pestaña \"URL\" en la parte superior.", + "step-7": "Copia la URL del curso que aparece abajo, pégala en el campo de entrada de URL y haz clic en \"Load\".", + "copy-url": "Copiar URL de curso", + "step-8": "Haz clic en \"Iniciar\" para comenzar.", + "step-9": "Sigue las instrucciones en CodeRoad para completar el curso. Nota: Es posible que debas reiniciar la terminal una vez para que los ajustes surtan efecto y las pruebas pasen correctamente.", + "summary": "Configuración local" }, "step-1": "Paso 1: Completa el proyecto", "step-2": "Paso 2: Envía tu código", @@ -609,9 +610,9 @@ "complete-both-steps": "Completa los dos pasos a continuación para terminar el desafío.", "runs-in-vm": "El proyecto se ejecuta en una máquina virtual, completa las historias de usuario descritas en ella y consigue que todas las pruebas pasen hasta el paso 1.", "completed": "Completado", - "not-completed": "Not completed", + "not-completed": "No completado", "not-started": "Sin iniciar", - "steps-completed": "{{completedSteps}} of {{totalSteps}} steps complete", + "steps-completed": "{{completedSteps}} de {{totalSteps}} pasos completados", "test": "Prueba", "sorry-try-again": "Lo sentimos, tu código no pasa. Inténtalo de nuevo.", "sorry-keep-trying": "Lo sentimos, tu código no pasa. Continúa intentándolo.", @@ -625,22 +626,22 @@ "if-help-university": "Ya hemos hecho un montón de progreso. Apoya ahora donando, para ayudar a nuestra organización benéfica con el largo camino por delante.", "preview-external-window": "Vista previa mostrada actualmente en ventana externa.", "fill-in-the-blank": { - "heading": "Fill in the blank", - "blank": "blank" + "heading": "Llene el espacio en blanco", + "blank": "en blanco" }, "quiz": { - "correct-answer": "Correct!", - "incorrect-answer": "Incorrect.", - "unanswered-questions": "The following questions are unanswered: {{ unansweredQuestions }}. You must answer all questions.", - "have-n-correct-questions": "You have {{ correctAnswerCount }} out of {{ total }} questions correct.", - "finish-modal-header": "Finish Quiz", - "finish-modal-body": "Are you sure you want to finish the quiz?", - "finish-modal-yes": "Yes, I am finished", - "finish-modal-no": "No, I would like to continue the quiz", - "exit-modal-header": "Exit Quiz", - "exit-modal-body": "Are you sure you want to leave the quiz? You will lose any progress you have made.", - "exit-modal-yes": "Yes, I want to leave the quiz", - "exit-modal-no": "No, I would like to continue the quiz" + "correct-answer": "¡Correcto!", + "incorrect-answer": "Incorrecto.", + "unanswered-questions": "Las siguientes preguntas no han sido respondidas: {{ unansweredQuestions }}. Debes responder a todas las preguntas.", + "have-n-correct-questions": "Tienes {{ correctAnswerCount }} preguntas correctas de {{ total }}.", + "finish-modal-header": "Finalizar cuestionario", + "finish-modal-body": "¿Estás seguro de que deseas finalizar el cuestionario?", + "finish-modal-yes": "Sí, he terminado", + "finish-modal-no": "No, quisiera continuar el cuestionario", + "exit-modal-header": "Salir del cuestionario", + "exit-modal-body": "¿Estás seguro de que quieres abandonar el cuestionario? Perderás cualquier progreso que hayas hecho.", + "exit-modal-yes": "Sí, quiero abandonar el cuestionario", + "exit-modal-no": "No, quisiera continuar el cuestionario" }, "exam": { "qualified": "Enhorabuena, has completado todos los requisitos para calificar al examen.", @@ -681,20 +682,20 @@ "invalid-transcript": "Tu link de transcripción no es correcta, debería tener está forma: <1>https://learn.microsoft.com/LOCALE/users/USERNAME/transcript/ID - revisa si los objetos MAYÚSCULA en tu vinculo están correctos." }, "block-type": { - "lecture": "Theory", - "workshop": "Workshop", - "lab": "Lab", - "review": "Review", - "quiz": "Quiz", - "cert-project": "Certification Project", - "exam": "Exam", - "warm-up": "Warm-up", - "learn": "Learn", - "practice": "Practice" + "lecture": "Teoría", + "workshop": "Taller", + "lab": "Laboratorio", + "review": "Revisión", + "quiz": "Prueba", + "cert-project": "Proyecto de certificación", + "exam": "Examen", + "warm-up": "Inicializar", + "learn": "Aprender", + "practice": "Practicar" }, "archive": { - "title": "Archived Coursework", - "content-not-updated": "<0>Warning: The content in this section is not being updated, but is still available for you to further your learning. We recommend trying <1>our current curriculum." + "title": "Cursos archivados", + "content-not-updated": "<0>Advertencia: El contenido de esta sección no se está actualizando, pero aún está disponible para que continúes tu aprendizaje. Recomendamos intentar <1>nuestro currículo actual." } }, "donate": { @@ -703,7 +704,7 @@ "redirecting": "Redirigiendo...", "thanks": "Gracias por donar", "thank-you": "Gracias por Empezar a ser un Apoyo", - "thank-you-continued": "Thank you for your continued support", + "thank-you-continued": "Gracias por su continuo apoyo", "success-card-update": "Tu tarjeta ha sido actualizada correctamente.", "additional": "Puede hacer una donación adicional única de cualquier monto utilizando este enlace: <0>{{url}}", "help-more": "Que Nuestra Caridad Haga Más Contigo", @@ -739,10 +740,10 @@ "progress-modal-cta-10": "Dona ahora para ayudarnos a desarrollar certificaciones profesionales gratuitas para todos.", "help-us-reach-20k": "Dona ahora para ayudar a que nuestra caridad logre nuestra meta de 20 000 colaboradores mensuales este año.", "beta-certification": "Esta certificación es recientemente en beta. Por favor considere donar para apoyar la compleción de su desarollo.", - "unfinished-certification": "This certification is currently in active development. While there isn't a claimable certification available at the moment, one will be available soon. In the meantime, you're welcome to explore the courses we have created below.", - "consider-donating": "Please consider donating to support the completion of its development.", - "unfinished-certification-2": "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to take the final exam when we launch it in the coming months.", - "consider-donating-2": "If you want to help us speed up development of this curriculum, please <0>consider becoming a supporter of our charity.", + "unfinished-certification": "Esta certificación está actualmente en desarrollo. Aunque no hay una certificación disponible en este momento para esta sección, estará disponible pronto. Mientras tanto, a continuación. siéntete bienvenido a explorar los cursos que hemos creado.", + "consider-donating": "Por favor, considere donar para apoyar la finalización de su desarrollo.", + "unfinished-certification-2": "Completar esta certificación le llevará una cantidad considerable de tiempo y esfuerzo. Si comienza ahora, es posible que esté listo para tomar el examen final cuando la lancemos en los próximos meses.", + "consider-donating-2": "Si desea ayudarnos a acelerar el desarrollo de este plan de estudios, <0>considere convertirse en un partidario de nuestra organización benéfica.", "help-us-develop": "Ayúdenos a desarollar certificados de programación profesional gratis para todos.", "nicely-done": "Bien hecho. Acabas de completar {{block}}.", "credit-card": "Tarjeta de crédito", @@ -808,13 +809,13 @@ "bear-progress-alt": "Illustración de un oso teddy adorable con una expressión de mendigo agarrando una alcancía vacía.", "bear-completion-alt": "Illustración de un oso teddy adorable agarrando un gran troféo.", "flying-bear": "Illustración de un oso adorable vestido con una gorra de graduación y volando con una medalla de apoyo.", - "crucial-contribution": "Your contributions are crucial in creating resources that empower millions of people to learn new skills and support their families.", + "crucial-contribution": "Sus contribuciones son cruciales para crear recursos que permitan a millones de personas aprender nuevas habilidades y apoyar a sus familias.", "support-benefits-title": "Beneficios de volverse un Colaborador:", "support-benefits-1": "No más interrupciones de donación", "support-benefits-2": "Obtendrás una medalla de Colaborador", "support-benefits-3": "Tu imagen de perfil tendrá un halo dorado", "support-benefits-4": "Obtendrás acceso a canales especiales de soporte en Discord - <0>únete a nuestro Discord y usa el comando <1>/supporter para obtener acceso", - "support-benefits-5": "And more benefits to come soon", + "support-benefits-5": "Y más beneficios por venir pronto", "exclusive-features": "Aqui esta la lista de caracteristicas exclusivas para ti como un Apoyo:", "current-initiatives-title": "Iniciativas recientes:", "your-donation-helps-followings": "Tu donación hace posibles las siguientes iniciativas:", @@ -823,10 +824,10 @@ "current-initiatives-3": "Traducir nuestro curriculo y tutoriales a 32 idiomas", "current-initiatives-4": "Crear un diploma de licensiados en ciencia computacional acreditado y gratis", "community-achivements-title": "Nuestros logros comunitarios este año:", - "community-achivements-1": "Published <0>193 full-length courses on YouTube.", - "community-achivements-2": "Published <0>850 text-based coding tutorials and <0>5 free books through freeCodeCamp Press.", - "community-achivements-3": "Merged <0>2,455 code contributions into our open source repositories on GitHub", - "community-achivements-4": "Translated <0>1.5 million words to make our curriculum and tutorials more accessible to speakers of many world languages", + "community-achivements-1": "Se publicaron <0>193 cursos completos en YouTube.", + "community-achivements-2": "<0>850 tutoriales de codificación basados en texto y <0>5 libros gratuitos publicados a través de freeCodeCamp.", + "community-achivements-3": "Se fusionaron <0>2.455 contribuciones de código en nuestros repositorios de código abierto en GitHub", + "community-achivements-4": "Se tradujeron <0>1,5 millones de palabras para que nuestro plan de estudios y tutoriales sean más accesibles para hablantes de muchos idiomas del mundo", "as-you-see": "Como puedes ver, hacemos las cosas. Así que descansa que pondremos tus donaciones a buen uso.", "get-benefits": "Obtén los beneficios y el conocimiento de ayudar a una caridad mejorar la educación. Convierteté en un partidario hoy.", "modal-benefits-title": "Colabora con nosotros", @@ -835,8 +836,8 @@ "help-millions-learn": "Ayuda a millones de personas a aprender", "reach-goals-faster": "Alcanza tus metas más rápido", "remove-distractions": "Eliminar distracciones", - "remove-interruptions": "Remove interruptions", - "acquire-skills-faster": "Acquire skills faster", + "remove-interruptions": "Remover interrupciones", + "acquire-skills-faster": "Adquiera habilidades más rápido", "animation-description": "Este es un anuncio animado de 20 segundos para animar a los campistas a convertirse en seguidores de freeCodeCamp. La animación comienza con un oso de téd que se convierte en un soporte. Como resultado, desaparecen los pop-ups de distracción y el oso llega a completar todas sus metas. Luego, se gradua y se convierte en un superhéroe educativo que ayuda a la gente de todo el mundo.", "animation-countdown": "Esta animación se detendrá después de {{secondesRemaining}} segundos." }, @@ -858,16 +859,16 @@ "search": { "label": "Buscar", "placeholder": { - "default": "Search our news articles, tutorials, and books", - "numbered": "Search {{ roundedTotalRecords }}+ news articles, tutorials, and books" + "default": "Busca en nuestros artículos de noticias, tutoriales y libros", + "numbered": "Busca en más de {{ roundedTotalRecords }} artículos de noticias, tutoriales y libros" }, "see-results": "Ver todos los resultados de {{searchQuery}}", "try": "¿Buscando algo? Prueba la barra de búsqueda en esta página.", - "no-results": "No results found", + "no-results": "No se encontraron resultados", "result-list": "Resultados de búsqueda" }, "misc": { - "coming-soon": "Coming Soon", + "coming-soon": "Muy pronto", "offline": "Parece que no estás conectado, es posible que tu progreso no se guarde", "server-offline": "No se pudo acceder al servidor y es posible que tu progreso no se guarde. Ponte en contacto con <0>soporte si este mensaje persiste", "unsubscribed": "Haz cancelado tu subscripción exitosamente", @@ -876,7 +877,7 @@ "brand-new-account": "Bienvenido a tu nueva cuenta freeCodeCamp. Vamos a empezar.", "duplicate-account-warning": "Si quieres iniciar sesión en una cuenta existente en lugar de crear esta cuenta, <0>haz clic aquí para eliminar esta cuenta y probar otra dirección de correo electrónico.", "quincy": "- Quincy Larson, el profesor que fundó freeCodeCamp.org", - "email-blast": "Each Friday I send an email with 5 links about programming and computer science. I send these to about 6 million people. Would you like me to send this to you, too?", + "email-blast": "Cada viernes envío un correo electrónico con 5 enlaces sobre programación y ciencias de la computación. Se lo envío a unas 6 millones de personas. ¿Te gustaría que te lo enviara a ti también?", "update-email-1": "Actualiza tu correo electrónico", "update-email-2": "Actualiza tu correo electrónico aquí:", "email": "Correo electrónico", @@ -892,16 +893,16 @@ "document-notfound": "documento no encontrado", "slow-load-msg": "Parece que esto está tardando más de lo habitual, por favor intente actualizar la página.", "navigation-warning": "Si abandonas esta página, perderás tu progreso. ¿Estás seguro?", - "fsd-b-description": "This comprehensive course prepares you to become a Certified Full Stack Developer. You'll learn to build complete web applications using HTML, CSS, JavaScript, React, TypeScript, Node.js, Python, and more.", - "fsd-b-cta": "Start Learning", - "continue-learning": "Continue Learning", - "fsd-b-benefit-1-title": "100k+ Students", - "fsd-b-benefit-1-description": "Join more than 100k students taking this certification.", - "fsd-b-benefit-2-title": "Professional Certification", - "fsd-b-benefit-2-description": "Prove your skills with an official, verifiable certification.", - "fsd-b-benefit-3-title": "500+ Exercises", - "fsd-b-benefit-3-description": "Solidify your knowledge with plenty of practice.", - "or": "OR" + "fsd-b-description": "Este curso completo te prepara para convertirte en un Desarrollador Full Stack Certificado. Aprenderás a crear aplicaciones web completas utilizando HTML, CSS, JavaScript, React, TypeScript, Node.js, Python y más.", + "fsd-b-cta": "Comienza a aprender", + "continue-learning": "Continuar aprendiendo", + "fsd-b-benefit-1-title": "Más de 100.000 estudiantes", + "fsd-b-benefit-1-description": "Únete a más de 100.000 estudiantes que están tomando esta certificación.", + "fsd-b-benefit-2-title": "Certificación Profesional", + "fsd-b-benefit-2-description": "Prueba tus habilidades con una certificación oficial verificable.", + "fsd-b-benefit-3-title": "+500 Ejercicios", + "fsd-b-benefit-3-description": "Consolida tus conocimientos con mucha práctica.", + "or": "O" }, "icons": { "gold-cup": "Copa de Oro", @@ -917,7 +918,7 @@ "heart": "Corazón", "initial": "Inicial", "input-reset": "Limpiar términos de búsqueda", - "input-search": "Submit search terms", + "input-search": "Enviar términos de búsqueda", "info": "Información de introducción", "spacer": "Espaciador", "toggle": "Alternar marca de verificación", @@ -930,8 +931,8 @@ "github": "Enlace al GitHub de {{username}}", "website": "Enlace al GitHub de {{username}}", "twitter": "Enlace al Twitter de {{username}}", - "next-month": "Go to next month", - "previous-month": "Go to previous month", + "next-month": "Ir al siguiente mes", + "previous-month": "Ir al mes anterior", "first-page": "Ir a la primera pagina", "previous-page": "Regresar a la pagina anterior", "next-page": "Ir a la página siguiente", @@ -956,17 +957,19 @@ "opens-new-window": "Abrir en una nueva ventana", "rsa-checkbox": "He probado el método Leer-Buscar-Preguntar", "similar-questions-checkbox": "He buscado por preguntas similares que ya han sido contestadas en el foro", - "edit-my-profile": "Edit my profile", - "editor-a11y-off-macos": "{{editorName}} editor content. Press Option+F1 for accessibility options.", - "editor-a11y-off-non-macos": "{{editorName}} editor content. Press Alt+F1 for accessibility options.", - "editor-a11y-on-macos": "{{editorName}} editor content. Accessibility mode set to 'on'. Press Command+E to disable or press Option+F1 for more options.", - "editor-a11y-on-non-macos": "{{editorName}} editor content. Accessibility mode set to 'on'. Press Ctrl+E to disable or press Alt+F1 for more options.", - "terminal-output": "Terminal output", - "not-available": "Not available", - "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page." + "edit-my-profile": "Editar mi perfil", + "editor-a11y-off-macos": "Contenido del editor {{editorName}} . Presione Opción+F1 para opciones de accesibilidad.", + "editor-a11y-off-non-macos": "Contenido del editor {{editorName}} . Presione Alt+F1 para opciones de accesibilidad.", + "editor-a11y-on-macos": "Contenido del editor {{editorName}} . El modo de accesibilidad está en 'encendido'. Presiona Comando+E para desactivar o presiona Opción+F1 para más opciones.", + "editor-a11y-on-non-macos": "Contenido del editor {{editorName}} . El modo de accesibilidad está en 'encendido'. Presiona Ctrl+E para desactivar o presiona Alt+F1 para más opciones.", + "terminal-output": "Salida del terminal", + "not-available": "No disponible", + "interactive-editor-desc": "Convierte ejemplos de código estático en editores interactivos. Esto te permite editar y ejecutar el código directamente en la página.", + "pinyin-to-hanzi-input-desc": "Esta tarea usa entradas de Pinyin a Hanzi. Escribe pinyin con números de tono (1 a 5). Cuando ingresas una sílaba correcta, se convertirá en una letra china. Si presionas retroceso después de una letra china, se cambiará de nuevo a pinyin y eliminará lo último que escribiste: si es un número de tono, se eliminará el tono; si es una letra, se eliminará la letra.", + "pinyin-tone-input-desc": "Esta tarea usa entradas de Pinyin con tono. Escribe pinyin con números de tono (1 a 5). Cuando ingresas un número de tono, se convertirán en una marca de tono. Si presionas retroceso, se eliminará lo último que escribiste: si es un número de tono, se eliminará el tono; si es una letra, se eliminará la letra." }, "flash": { - "no-email-in-userinfo": "We could not retrieve an email from your chosen provider. Please try another provider or use the 'Continue with Email' option.", + "no-email-in-userinfo": "No pudimos recuperar un correo electrónico de tu proveedor seleccionado. Por favor, intenta con otro proveedor o usa la opción \"Continuar con correo electrónico\".", "honest-first": "Para reclamar una certificación, primero debes aceptar nuestra política de honestidad académica", "really-weird": "Sucedió algo realmente extraño. Si vuelve a ocurrir, considera hacer un reporte del problema en https://github.com/freeCodeCamp/freeCodeCamp/issues/new", "generic-error": "Algo salió mal. Por favor, inténtelo de nuevo en un momento o pónte en contacto con support@freecodecamp.org si el error persiste.", @@ -999,7 +1002,7 @@ "expired-link": "Parece que el enlace en el que hiciste clic ha expirado, solicita un enlace nuevo para iniciar sesión", "signin-success": "¡Éxito! Has iniciado sesión en tu cuenta. ¡Feliz día programando!", "social-auth-gone": "Nos estamos alejando de la autenticación social por razones de privacidad. La próxima vez, te recomendamos que utilices tu dirección de correo electrónico: {{email}} para iniciar sesión.", - "name-needed": "We need your name to put it on your certification. Please add your name in your profile and click save. Then we can issue your certification.", + "name-needed": "Necesitamos tu nombre para poder incluirlo en tu certificación. Agrega tu nombre a los ajustes de tu cuenta y haz clic en el botón Guardar. Entonces podremos emitir tu certificación.", "incomplete-steps": "Parece que no has completado los pasos necesarios. Por favor, completa los proyectos requeridos para reclamar la certificación {{name}}.", "already-claimed": "Parece que ya has reclamado la certificación {{name}}", "cert-claim-success": "¡@{{username}}, has reclamado con éxito la certificación {{name}}! ¡Felicitaciones en nombre del equipo de freeCodeCamp.org!", @@ -1010,7 +1013,7 @@ "not-eligible": "Este usuario no es elegible para las certificaciones de freeCodeCamp.org en este momento.", "profile-private": "{{username}} ha elegido hacer su perfil privado. Deberán hacer públicas sus perfiles para que otros puedan ver sus certificaciones.", "certs-private": "{{username}} ha elegido que sus certificaciones sean privadas. Deberá hacer públicas sus certificaciones para que otros puedan verlas.", - "certs-claimable": "You can now claim the {{certName}} certification! Visit your settings page to claim your certification.", + "certs-claimable": "¡Ahora puedes reclamar la certificación {{certName}}! Visita tu página de ajustes para reclamar tu certificación.", "not-honest": "{{username}} aún no ha aceptado nuestro Compromiso de Honestidad Académica.", "user-not-certified": "Parece que el usuario {{username}} no está certificado por {{cert}}", "invalid-challenge": "Eso no parece ser un envío de desafío válido", @@ -1021,7 +1024,7 @@ "unlink-success": "Has desvinculado correctamente tu {{website}}", "provide-username": "Comprueba si has proporcionado un nombre de usuario y un reporte", "report-sent": "Se envió un informe al equipo con {{email}} en copia", - "report-error": "Unable to report this user at this time.", + "report-error": "No es posible reportar a este usuario en este momento.", "certificate-missing": "La certificación que intentaste ver no existe", "create-token-err": "Se ha producido un error al crear su token de usuario", "delete-token-err": "Se ha producido un error al eliminar su token de usuario", @@ -1040,13 +1043,13 @@ "invalid-update-flag": "Estás intentando acceder a recursos prohibidos. Por favor, solicita asistencia en https://forum.freecodecamp.org si es una solicitud válida.", "generate-exam-error": "Un error ocurrió intentando generar tu examen.", "cert-not-found": "La certificación {{certSlug}} no existe.", - "reset-editor-layout": "Your editor layout has been reset.", - "user-token-generated": "A user token was created for you.", - "user-token-generate-error": "Something went wrong trying to generate a user token for you.", - "user-token-copied": "User token copied to clipboard.", - "user-token-copy-error": "Something went wrong trying to copy your token.", - "course-url-copied": "Course URL copied to clipboard.", - "course-url-copy-error": "Something went wrong trying to copy the course URL.", + "reset-editor-layout": "Se ha restablecido el diseño de tu editor.", + "user-token-generated": "Se ha creado un token de usuario para ti.", + "user-token-generate-error": "Algo salió mal al intentar generar un token de usuario para ti.", + "user-token-copied": "Token de usuario copiado al portapapeles.", + "user-token-copy-error": "Algo salió mal al intentar copiar tu token.", + "course-url-copied": "URL del curso copiado al portapapeles.", + "course-url-copy-error": "Algo salió mal al intentar copiar la URL del curso.", "ms": { "transcript": { "link-err-1": "Por favor incluye un URL de transcripción de Microsoft en la solicitud.", @@ -1099,7 +1102,7 @@ "ms-learn-link": "Por favor, utilice un enlace válido de Microsoft Learn trophy.", "path-url": "Probablemente quieras enviar la ruta raíz, es decir, https://example.com, no https://example.com/path", "source-code-link-required": "Recuerda enviar el enlace a tu código fuente.", - "source-code-link-public": "Source code link must be publicly visible." + "source-code-link-public": "El enlace al código fuente debe ser públicamente visible." }, "certification": { "executive": "Director Ejecutivo, freeCodeCamp.org", @@ -1108,16 +1111,16 @@ "issued": "Emitido", "fulltext": "<0>Se certifica que <1>{{user}} <2>ha completado exitosamente la <3>{{title}} <4>Certificación de Desarrollador en {{time}} <5>que representa aproximadamente {{completionTime}} horas de trabajo en el curso", "fulltextNoHours": "<0>La presente certifica que <1>{{user}} <2>completó con éxito la <3>{{title}} <4>Certificación de desarrollador/a en {{time}}", - "quincy-larson-signature": "Quincy Larson's Signature", - "julia-liuson-signature": "Julia Liuson's Signature", + "quincy-larson-signature": "La firma de Quincy Larson", + "julia-liuson-signature": "La firma de Julia Liuson", "project": { "heading-legacy-full-stack": "Como parte de esta certificación Legacy Full Stack, {{user}} completó las siguientes certificaciones:", "heading-exam": "Como parte de está certificación, {{user}} aprobó el examén de seguimiento: ", "heading": "Como parte de esta certificación, {{user}} construyó los siguientes proyectos y consiguió que se aprobaran todas las suites automatizadas de pruebas:", - "solution": "Solution", + "solution": "Solución", "no-solution": "error mostrando la solución, envía un correo electrónico a support@freeCodeCamp.org para obtener ayuda.", - "no-solution-to-display": "No solution to display", - "source": "Source", + "no-solution-to-display": "No hay solución para mostrar", + "source": "Fuente", "footnote": "Si sospechas que alguno de estos proyectos infringe la <2>política de honestidad académica, por favor <5>repórtalo a nuestro equipo.", "title": { "Build a Personal Portfolio Webpage": "Construir una página web de portafolio personal", @@ -1197,70 +1200,70 @@ } }, "title": { - "responsive-web-design": "Legacy Responsive Web Design V8", - "responsive-web-design-cert": "Legacy Responsive Web Design V8 Certification", - "javascript-algorithms-and-data-structures": "Legacy JavaScript Algorithms and Data Structures V7", - "javascript-algorithms-and-data-structures-cert": "Legacy JavaScript Algorithms and Data Structures V7 Certification", - "javascript-algorithms-and-data-structures-v8": "Legacy JavaScript Algorithms and Data Structures V8", - "javascript-algorithms-and-data-structures-v8-cert": "Legacy JavaScript Algorithms and Data Structures V8 Certification", - "front-end-development-libraries": "Front End Development Libraries V8", - "front-end-development-libraries-cert": "Front End Development Libraries V8 Certification", - "data-visualization": "Data Visualization V8", - "data-visualization-cert": "Data Visualization V8 Certification", - "relational-database-v8": "Relational Database V8", - "relational-database-v8-cert": "Relational Database V8 Certification", - "back-end-development-and-apis": "Back End Development and APIs V8", - "back-end-development-and-apis-cert": "Back End Development and APIs V8 Certification", - "quality-assurance-v7": "Quality Assurance", - "quality-assurance-v7-cert": "Quality Assurance Certification", - "scientific-computing-with-python-v7": "Scientific Computing with Python", - "scientific-computing-with-python-v7-cert": "Scientific Computing with Python Certification", - "data-analysis-with-python-v7": "Data Analysis with Python", - "data-analysis-with-python-v7-cert": "Data Analysis with Python Certification", - "information-security-v7": "Information Security", - "information-security-v7-cert": "Information Security Certification", - "machine-learning-with-python-v7": "Machine Learning with Python", - "machine-learning-with-python-v7-cert": "Machine Learning with Python Certification", - "college-algebra-with-python-v8": "College Algebra with Python", - "college-algebra-with-python-v8-cert": "College Algebra with Python Certification", - "foundational-c-sharp-with-microsoft": "Foundational C# with Microsoft", - "foundational-c-sharp-with-microsoft-cert": "Foundational C# with Microsoft Certification", - "a2-english-for-developers": "A2 English for Developers", - "a2-english-for-developers-cert": "A2 English for Developers Certification", - "b1-english-for-developers": "B1 English for Developers", - "b1-english-for-developers-cert": "B1 English for Developers Certification", - "responsive-web-design-v9": "Responsive Web Design", - "responsive-web-design-v9-cert": "Responsive Web Design Certification", + "responsive-web-design": "Diseño Web Adaptativo Legado V8", + "responsive-web-design-cert": "Certificación en Diseño Web Adaptativo Legado V8", + "javascript-algorithms-and-data-structures": "Algoritmos y estructuras de datos de JavaScript heredado V7", + "javascript-algorithms-and-data-structures-cert": "Certificación de algoritmos y estructuras de datos de JavaScript heredada V7", + "javascript-algorithms-and-data-structures-v8": "Algoritmos y estructuras de datos de JavaScript heredado V8", + "javascript-algorithms-and-data-structures-v8-cert": "Certificación de algoritmos y estructuras de datos de JavaScript heredada V8", + "front-end-development-libraries": "Bibliotecas de desarrollo front-end V8", + "front-end-development-libraries-cert": "Certificación en bibliotecas de desarrollo front-end V8", + "data-visualization": "Visualización de datos V8", + "data-visualization-cert": "Certificación en visualización de datos V8", + "relational-database-v8": "Base de datos relacional V8", + "relational-database-v8-cert": "Certificación en base de datos relacional V8", + "back-end-development-and-apis": "Desarrollo back-end y APIs V8", + "back-end-development-and-apis-cert": "Certificación de desarrollo back-end y APIs V8", + "quality-assurance-v7": "Seguro de calidad", + "quality-assurance-v7-cert": "Certificación de Garantía de Calidad", + "scientific-computing-with-python-v7": "Computación científica con Python", + "scientific-computing-with-python-v7-cert": "Certificación en computación científica con Python", + "data-analysis-with-python-v7": "Análisis de datos con Python", + "data-analysis-with-python-v7-cert": "Certificación en análisis de datos con Python", + "information-security-v7": "Seguridad de la información", + "information-security-v7-cert": "Certificación de seguridad de la información", + "machine-learning-with-python-v7": "Aprendizaje automático con Python", + "machine-learning-with-python-v7-cert": "Certificación en aprendizaje automático con Python", + "college-algebra-with-python-v8": "Álgebra universitaria con Python", + "college-algebra-with-python-v8-cert": "Certificación en Álgebra universitaria con Python", + "foundational-c-sharp-with-microsoft": "Fundamentos de C# con Microsoft", + "foundational-c-sharp-with-microsoft-cert": "Fundamentos de C# con certificación de Microsoft", + "a2-english-for-developers": "Inglés A2 para Desarrolladores", + "a2-english-for-developers-cert": "Certificación de inglés A2 para Desarrolladores", + "b1-english-for-developers": "B1 Inglés para Desarrolladores", + "b1-english-for-developers-cert": "Certificación de inglés B1 para Desarrolladores", + "responsive-web-design-v9": "Diseño web responsivo", + "responsive-web-design-v9-cert": "Certificación en diseño web responsivo", "javascript-v9": "JavaScript", - "javascript-v9-cert": "JavaScript Certification", - "front-end-development-libraries-v9": "Front End Development Libraries", - "front-end-development-libraries-v9-cert": "Front End Development Libraries Certification", + "javascript-v9-cert": "Certificación en JavaScript", + "front-end-development-libraries-v9": "Bibliotecas de desarrollo front-end", + "front-end-development-libraries-v9-cert": "Certificación en bibliotecas de desarrollo front-end", "python-v9": "Python", - "python-v9-cert": "Python Certification", - "relational-databases-v9": "Relational Database", - "relational-databases-v9-cert": "Relational Database Certification", - "back-end-development-and-apis-v9": "Back End Development and APIs", - "back-end-development-and-apis-v9-cert": "Back End Development and APIs Certification", - "full-stack-developer-v9": "Full Stack Developer", - "full-stack-developer-v9-cert": "Full Stack Developer Certification", - "a1-professional-spanish": "A1 Professional Spanish", - "a1-professional-spanish-cert": "A1 Professional Spanish Certification", - "a2-professional-spanish": "A2 Professional Spanish", - "a2-professional-spanish-cert": "A2 Professional Spanish Certification", - "a2-professional-chinese": "A2 Professional Chinese", - "a2-professional-chinese-cert": "A2 Professional Chinese Certification", - "a1-professional-chinese": "A1 Professional Chinese", - "a1-professional-chinese-cert": "A1 Professional Chinese Certification", - "legacy-front-end": "Legacy Front End", - "legacy-front-end-cert": "Legacy Front End Certification", - "legacy-back-end": "Legacy Back End", - "legacy-back-end-cert": "Legacy Back End Certification", - "legacy-data-visualization": "Legacy Data Visualization", - "legacy-data-visualization-cert": "Legacy Data Visualization Certification", - "information-security-and-quality-assurance": "Legacy Information Security and Quality Assurance", - "information-security-and-quality-assurance-cert": "Legacy Information Security and Quality Assurance Certification", - "full-stack": "Legacy Full Stack", - "full-stack-cert": "Legacy Full Stack Certification" + "python-v9-cert": "Certificación en Python", + "relational-databases-v9": "Base de datos relacional", + "relational-databases-v9-cert": "Certificación en base de datos relacional", + "back-end-development-and-apis-v9": "Desarrollo back-end y APIs", + "back-end-development-and-apis-v9-cert": "Certificación en desarrollo back-end y APIs", + "full-stack-developer-v9": "Desarrollador Full Stack", + "full-stack-developer-v9-cert": "Certificación de desarrollador full stack", + "a1-professional-spanish": "Español profesional A1", + "a1-professional-spanish-cert": "Certificado de español profesional A1", + "a2-professional-spanish": "Español Profesional A2", + "a2-professional-spanish-cert": "Certificación de Español Profesional A2", + "a2-professional-chinese": "Chino Profesional A2", + "a2-professional-chinese-cert": "Certificación de Chino Profesional A2", + "a1-professional-chinese": "Chino profesional A1", + "a1-professional-chinese-cert": "Certificado de chino profesional A1", + "legacy-front-end": "Front End heredado", + "legacy-front-end-cert": "Certificación Front End Legacy", + "legacy-back-end": "Back End heredado", + "legacy-back-end-cert": "Certificación de back end heredada", + "legacy-data-visualization": "Visualización de datos heredados", + "legacy-data-visualization-cert": "Certificación de visualización de datos heredados", + "information-security-and-quality-assurance": "Seguridad de la información heredada y garantía de calidad", + "information-security-and-quality-assurance-cert": "Certificación de garantía de calidad y seguridad de la información heredada", + "full-stack": "Legado de pila completa", + "full-stack-cert": "Certificacion de Legado de pila completa" } }, "certification-card": { @@ -1303,20 +1306,20 @@ "yes-please": "Si por favor, deseo borrar mi token" }, "exam-token": { - "exam-token": "Exam Token", - "note": "Your exam token is a secret key that allows you to access exams. Do not share this token with anyone.", - "invalidation-1": "It looks like you have a valid exam token. If you generate a new one, your existing token will be invalidated.", - "invalidation-2": "If you generate a new token, your existing token will be invalidated.", - "generate-exam-token": "Generate Exam Token", - "your-exam-token": "Your Exam Token is: {{token}}", - "error": "There was an error generating your token, please try again in a moment.", - "no-token": "It looks like you don't have a valid exam token.", - "copy": "Copy Exam Token", - "copied": "Token copied to clipboard", - "copy-error": "Error copying token to clipboard", - "token-usage": "Your Exam Environment authorization token is used to log you into the desktop application.", - "generated": "A new Exam Environment authorization token has been generated for your account.", - "non-staff-testing": "Only freeCodeCamp staff are allowed to generate exam tokens on non-production environments at this time." + "exam-token": "Token de examen", + "note": "Tu token de examen es una clave secreta que te permite acceder a los exámenes. No compartas este token con nadie.", + "invalidation-1": "Parece que tienes un token de examen válido. Si generas uno nuevo, tu token existente quedará invalidado.", + "invalidation-2": "Si generas un nuevo token, tu token existente quedará invalidado.", + "generate-exam-token": "Generar token de examen", + "your-exam-token": "Tu token de examen es: {{token}}", + "error": "Hubo un error al generar tu token, por favor inténtalo de nuevo en un momento.", + "no-token": "Parece que no tienes un token de examen válido.", + "copy": "Copiar token de examen", + "copied": "Token copiado al portapapeles", + "copy-error": "Error al copiar el token al portapapeles", + "token-usage": "Tu token de autorización del entorno de examen se usa para iniciar sesión en la aplicación de escritorio.", + "generated": "Se ha generado un nuevo token de autorización del entorno de examen para tu cuenta.", + "non-staff-testing": "Solo el personal de freeCodeCamp está autorizado para generar tokens de examen en ambientes no productivos en este momento." }, "shortcuts": { "title": "Atajos de teclado", @@ -1328,7 +1331,7 @@ "focus-instructions-panel": "Panel de Instrucciones de enfoque", "navigate-previous": "Navegar al ejercicio anterior", "navigate-next": "Navegar al siguiente ejercicio", - "play-video": "Play Video" + "play-video": "Reproducir video" }, "signout": { "heading": "Salir de tu cuenta", @@ -1341,7 +1344,7 @@ "heading": "Advertencia: Este es un despliegue de pruebas de acceso temprano", "p1": "Le damos la bienvenida a probar esta plataforma en modo test-only y obtener acceso temprano a las próximas características. A veces estos cambios se denominan siguiente, beta, etapa, etc. intercambiablemente.", "p2": "Te agradecemos por reportar los errores que encuentres y ayudar a mejorar freeCodeCamp.org.", - "p3": "Your progress MAY NOT be saved on your next visit, and any certifications claimed on this deployment are not valid.", + "p3": "Su progreso NO se guardará en su próxima visita y cualquier certificado reclamado en este desarrollo no será válido.", "certain": "Aceptar y descartar" }, "survey": { @@ -1371,32 +1374,32 @@ } }, "speaking-modal": { - "heading": "Speaking Practice", - "repeat-sentence": "Repeat aloud this sentence:", - "play": "Play", - "playing": "Playing...", - "record": "Record", - "stop": "Stop", - "incorrect-words": "Incorrect words: {{words}}.", - "misplaced-words": "Misplaced words: {{words}}.", - "correct-congratulations": "That's correct! Congratulations!", - "very-good": "Very good!", - "try-again": "Try again.", - "no-audio-available": "No audio file available.", - "no-speech-detected": "Recording stopped. No speech detected.", - "speech-recognition-not-supported": "Speech recognition not supported in this browser.", - "recording-speak-now": "Recording. Speak now.", - "recording-stopped-processing": "Recording stopped. Processing...", - "microphone-access-error": "Error: Could not access microphone.", - "speaking-button": "Practice speaking" + "heading": "Práctica de habla", + "repeat-sentence": "Repite en voz alta esta frase:", + "play": "Reproducir", + "playing": "Reproduciendo...", + "record": "Grabar", + "stop": "Detener", + "incorrect-words": "Palabras incorrectas: {{words}}.", + "misplaced-words": "Palabras fuera de lugar: {{words}}.", + "correct-congratulations": "¡Es correcto! ¡Felicidades!", + "very-good": "¡Muy bueno!", + "try-again": "Inténtalo de nuevo.", + "no-audio-available": "No hay archivo de audio disponible.", + "no-speech-detected": "Grabación detenida. No se detectó discurso.", + "speech-recognition-not-supported": "Reconocimiento de voz no soportado en este navegador.", + "recording-speak-now": "Grabando. Habla ahora.", + "recording-stopped-processing": "Grabación detenida. Procesando...", + "microphone-access-error": "Error: No se pudo acceder al micrófono.", + "speaking-button": "Practica hablar" }, "curriculum": { "catalog": { - "title": "Explore our Catalog", + "title": "Explora nuestro catálogo", "levels": { - "beginner": "Beginner", - "intermediate": "Intermediate", - "advanced": "Advanced" + "beginner": "Principiante", + "intermediate": "Intermedio", + "advanced": "Avanzado" } } } diff --git a/client/i18n/locales/german/intro.json b/client/i18n/locales/german/intro.json index a99ac2a2dc8441..47c3c199de762f 100644 --- a/client/i18n/locales/german/intro.json +++ b/client/i18n/locales/german/intro.json @@ -311,7 +311,7 @@ "build-an-rpg-creature-search-app-project": { "title": "Build an RPG Creature Search App Project", "intro": [ - "This is one of the required projects to earn your certification.", + "Dies ist eines der Projekte, die für den Erhalt der Zertifizierung erforderlich sind.", "For this project, you will build an RPG creature search app." ] }, @@ -4507,7 +4507,7 @@ ] }, "lab-rpg-character": { - "title": "Build an RPG character", + "title": "Build an RPG Character", "intro": [ "In this lab you will practice basic python by building an RPG character." ] @@ -7528,8 +7528,14 @@ }, "a1-professional-spanish": { "title": "A1 Professional Spanish Certification (Beta)", - "note": "This certification is currently in active development. While there isn't a claimable certification available for this section at the moment, one will be available soon. In the meantime, you're welcome to explore the courses we have created below.", - "intro": ["Placeholder intro"], + "note": "This certification is currently in active development. We are currently publishing the first three chapters, and future chapters will be released as they are developed by our instructional design team. Once all the chapters are available, we will release the certification exam.", + "intro": [ + "This course teaches you the fundamentals of Spanish at the A1 level of the Common European Framework of Reference (CEFR), with lessons focused on professional settings. Each module is broken down into sections:", + "- A Warm-up section for quick review.", + "- Learn sections with new vocabulary and grammar.", + "- Practice sections to check your comprehension and writing skills.", + "- A Review section with key grammar and vocabulary." + ], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", "es-a1-chapter-spanish-fundamentals": "Spanish Fundamentals", @@ -7745,6 +7751,7 @@ "chapters": { "html": "HTML", "css": "CSS", + "computers": "Computers", "responsive-web-design-certification-exam": "Responsive Web Design Certification Exam" }, "modules": { diff --git a/client/i18n/locales/german/translations.json b/client/i18n/locales/german/translations.json index 64d7c2c23b6151..fc310228ec1bec 100644 --- a/client/i18n/locales/german/translations.json +++ b/client/i18n/locales/german/translations.json @@ -1,23 +1,23 @@ { "buttons": { "logged-in-cta-btn": "Los geht's! (Es ist 100% kostenlos.)", - "get-started": "Get Started", + "get-started": "Erste Schritte", "logged-out-cta-btn": "Melde dich an, um deinen Fortschritt zu speichern. (Es ist kostenlos.)", "view-curriculum": "Curriculum anzeigen", "first-lesson": "Gehe zur ersten Lektion", "close": "Schließen", "edit": "Bearbeiten", - "copy": "Copy", + "copy": "Kopieren", "view": "Anzeigen", - "submit-continue": "Submit and continue", + "submit-continue": "Senden und fortsetzen", "view-code": "Code anschauen", "view-project": "Projekt anschauen", - "view-cert-title": "View {{certTitle}}", + "view-cert-title": "{{certTitle}} ansehen", "show-cert": "Zertifikat anzeigen", "claim-cert": "Zertifizierung anfordern", "save-progress": "Fortschritt speichern", - "accepted-honesty": "You have agreed to our Academic Honesty Policy.", - "agree-honesty": "I agree to freeCodeCamp's Academic Honesty Policy.", + "accepted-honesty": "Du hast unserer Richtlinie bezüglich der akademischen Ehrlichkeit zugestimmt.", + "agree-honesty": "Ich stimme der akademischen Ehrlichkeitsrichtlinie von freeCodeCamp zu.", "save-portfolio": "Dieses Portfolioelement speichern", "remove-portfolio": "Dieses Portfolioelement entfernen", "add-portfolio": "Neues Portfolioelement hinzufügen", @@ -30,16 +30,16 @@ "sign-up-email-list": "Melde dich für Quincys wöchentliche E-Mails an", "sign-out": "Abmelden", "curriculum": "Curriculum", - "contribute": "Contribute", + "contribute": "Mitwirken", "podcast": "Podcast", "forum": "Forum", "radio": "Radio", "profile": "Profil", "news": "News", "donate": "Spenden", - "supporters": "Supporters", - "exam-app": "Exam App", - "go-to-supporters": "Go to Supporters Page", + "supporters": "Unterstützer", + "exam-app": "Prüfungs-App", + "go-to-supporters": "Gehe zur Unterstützerseite", "update-settings": "Meine Kontoeinstellungen ändern", "sign-me-out": "Von freeCodeCamp abmelden", "flag-user": "Dieses Benutzerkonto wegen Missbrauch melden", @@ -49,23 +49,23 @@ "settings": "Einstellungen", "take-me": "Bring mich zu den Herausforderungen", "check-answer": "Überprüfe deine Antwort", - "submit": "Submit", + "submit": "Absenden", "get-hint": "Erhalte einen Tipp", "ask-for-help": "Bitte um Hilfe", "create-post": "Einen Hilfebeitrag im Forum erstellen", "cancel": "Abbrechen", "reset-lesson": "Diese Lektion zurücksetzen", - "revert": "Revert", - "revert-to-saved-code": "Revert to Saved Code", + "revert": "Zurücksetzen", + "revert-to-saved-code": "Zurücksetzen auf den gespeicherten Code", "run": "Ausführen", "run-test": "Führe die Tests aus (Strg + Enter)", - "check-code": "Check Your Code", - "check-code-ctrl": "Check Your Code (Ctrl + Enter)", - "check-code-cmd": "Check Your Code (Command + Enter)", + "check-code": "Überprüfe deinen Code", + "check-code-ctrl": "Überprüfe deinen Code (Ctrl + Enter)", + "check-code-cmd": "Überprüfe deinen Code (Command + Enter)", "command-enter": "⌘ + Enter", - "ctrl-enter": "Ctrl + Enter", + "ctrl-enter": "Ctrl + Eingabe\n", "reset": "Zurücksetzen", - "reset-step": "Reset This Step", + "reset-step": "Diesen Schritt zurücksetzen", "help": "Hilfe", "get-help": "Hilfe bekommen", "watch-video": "Ein Video ansehen", @@ -73,51 +73,51 @@ "click-here": "Klicke hier, um dich anzumelden", "save": "Speichern", "save-code": "Speichere deinen Code", - "show-demo": "Show Demo", + "show-demo": "Demo anzeigen", "no-thanks": "Nein, danke", "yes-please": "Ja, bitte", "update-email": "Meine E-Mail-Adresse aktualisieren", "verify-email": "E-Mail-Adresse bestätigen", "submit-and-go": "Absenden und zur nächsten Herausforderung gehen", - "submit-and-go-ctrl": "Submit and go to next challenge (Ctrl + Enter)", - "submit-and-go-cmd": "Submit and go to next challenge (Command + Enter)", + "submit-and-go-ctrl": "Absenden und zur nächsten Challenge gehen (Ctrl + Enter)", + "submit-and-go-cmd": "Absenden und zur nächsten Challenge gehen (Command + Enter)", "go-to-next": "Gehe zur nächsten Herausforderung", - "go-to-next-ctrl": "Go to next challenge (Ctrl + Enter)", - "go-to-next-cmd": "Go to next challenge (Command + Enter)", + "go-to-next-ctrl": "Gehe zur nächsten Challenge (Ctrl + Enter)", + "go-to-next-cmd": "Gehe zur nächsten Challenge (Command + Enter)", "ask-later": "Frag später", "start-coding": "Beginne zu programmieren!", "go-to-settings": "Gehe zu den Einstellungen, um dein Zertifikat zu beantragen", "click-start-course": "Start den Kurs", "click-start-project": "Starte das Projekt", - "click-start-exam": "Start the exam", - "go-to-course": "Go to course", + "click-start-exam": "Prüfung starten", + "go-to-course": "Gehe zum Kurs", "change-language": "Sprache wechseln", "resume-project": "Projekt fortsetzen", "start-project": "Projekt starten", - "tweet": "Tweet", - "previous-question": "Previous question", - "next-question": "Next question", - "exit-exam": "Exit the exam", - "exit": "Exit", - "finish-exam": "Finish the exam", - "finish": "Finish", - "exit-quiz": "Exit the quiz", - "finish-quiz": "Finish the quiz", + "tweet": "Tweeten", + "previous-question": "Vorherige Frage", + "next-question": "Nächste Frage", + "exit-exam": "Prüfung beenden", + "exit": "Beenden", + "finish-exam": "Prüfung abschließen", + "finish": "Abschließen", + "exit-quiz": "Quiz beenden", + "finish-quiz": "Quiz einreichen", "submit-exam-results": "Submit my results", "verify-trophy": "Verify Trophy", "link-account": "Link Account", "unlink-account": "Unlink Account", "update-card": "Update your card", - "donate-now": "Donate Now", - "confirm-amount": "Confirm amount", - "play": "Play Video", - "pause": "Pause Video", + "donate-now": "Jetzt Spenden", + "confirm-amount": "Betrag bestätigen", + "play": "Video abspielen", + "pause": "Video anhalten", "closed-caption": "Closed caption", "share-on-x": "Share on X", "share-on-bluesky": "Share on BlueSky", "share-on-threads": "Share on Threads", "play-scene": "Press Play", - "download-latest-version": "Download the Latest Version", + "download-latest-version": "Die neueste Version herunterladen", "more-ways-to-sign-in": "More ways to sign in", "sign-in-with-google": "Sign in with Google", "go-to-dcc-today": "Go to Today's Challenge", @@ -140,13 +140,13 @@ "saturday": "S" }, "long": { - "sunday": "Sunday", - "monday": "Monday", - "tuesday": "Tuesday", - "wednesday": "Wednesday", - "thursday": "Thursday", - "friday": "Friday", - "saturday": "Saturday" + "sunday": "Sonntag", + "monday": "Montag", + "tuesday": "Dienstag", + "wednesday": "Mittwoch", + "thursday": "Donnerstag", + "friday": "Freitag", + "saturday": "Samstag" } }, "landing": { @@ -281,7 +281,7 @@ "disabled": "Deine Zertifizierungen werden deaktiviert, wenn sie auf privat gesetzt sind.", "private-name": "Dein Name erscheint nicht auf Deinen Zertifizierungen, wenn dieser auf privat eingestellt ist.", "claim-legacy": "Sobald du die folgenden freeCodeCamp Zertifizierungen erworben hast, kannst du das {{cert}} beanspruchen:", - "for": "Kontoeinstellungen für {{username}}", + "for": "Settings for {{username}}", "sound-mode": "Das sorgt für den angenehmen Klang der Akustikgitarre auf der gesamten Website. Du bekommst musikalisches Feedback, wenn du im Editor tippst, Aufgaben löst, Zertifizierungen beantragst und vieles mehr.", "sound-volume": "Lautstärke Lagerfeuer-Modus:", "scrollbar-width": "Editor Scrollbar Width", @@ -315,7 +315,7 @@ "results-for": "Results for {{projectTitle}}", "my-profile": "Mein Profil", "my-name": "Mein Name", - "my-location": "Mein Standort", + "my-location": "My stated location (freeCodeCamp does not track your actual location)", "my-about": "Mein \"Über mich\"-Bereich", "my-points": "Meine Punkte", "my-heatmap": "Meine Heatmap (Punkte-Historie)", @@ -328,12 +328,13 @@ "keyboard-shortcuts": "Tastaturkurzbefehle aktivieren" }, "headings": { + "account": "Account", "certs": "Zertifikate", "legacy-certs": "Alte Zertifikate", "honesty": "Akademischer Ehrlichkeitskodex", "internet": "Dein Internetauftritt", "portfolio": "Portfolio-Einstellungen", - "privacy": "Privatsphäre-Einstellungen", + "privacy": "Privacy", "personal-info": "Personal Information" }, "danger": { @@ -362,7 +363,7 @@ }, "email": { "missing": "Du hast keine E-Mail mit diesem Konto verbunden.", - "heading": "E-Mail-Einstellungen", + "heading": "Email", "not-verified": "Deine E-Mail wurde noch nicht verifiziert.", "check": "Bitte überprüfe deine E-Mail, oder <0>fordere eine neue Bestätigungs-E-Mail an.", "current": "Aktuelle E-Mail", @@ -963,7 +964,9 @@ "editor-a11y-on-non-macos": "{{editorName}} editor content. Accessibility mode set to 'on'. Press Ctrl+E to disable or press Alt+F1 for more options.", "terminal-output": "Terminal output", "not-available": "Not available", - "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page." + "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page.", + "pinyin-to-hanzi-input-desc": "This task uses Pinyin-to-Hanzi inputs. Type pinyin with tone numbers (1 to 5). When you enter a correct syllable, it will turn into a Chinese character. If you press backspace after a Chinese character, it will change back to pinyin and remove the last thing you typed: if it's a tone number, the tone is removed; if it's a letter, the letter is removed.", + "pinyin-tone-input-desc": "This task uses Pinyin Tone inputs. Type pinyin with tone numbers (1 to 5). When you enter a tone number, it will be converted to a tone mark. If you press backspace, the last thing you typed is removed: if it's a tone number, the tone is removed; if it's a letter, the letter is removed." }, "flash": { "no-email-in-userinfo": "We could not retrieve an email from your chosen provider. Please try another provider or use the 'Continue with Email' option.", diff --git a/client/i18n/locales/italian/intro.json b/client/i18n/locales/italian/intro.json index a5c15f4a591cf0..88587f9e50ae9e 100644 --- a/client/i18n/locales/italian/intro.json +++ b/client/i18n/locales/italian/intro.json @@ -4507,7 +4507,7 @@ ] }, "lab-rpg-character": { - "title": "Build an RPG character", + "title": "Build an RPG Character", "intro": [ "In this lab you will practice basic python by building an RPG character." ] @@ -7528,8 +7528,14 @@ }, "a1-professional-spanish": { "title": "A1 Professional Spanish Certification (Beta)", - "note": "This certification is currently in active development. While there isn't a claimable certification available for this section at the moment, one will be available soon. In the meantime, you're welcome to explore the courses we have created below.", - "intro": ["Placeholder intro"], + "note": "This certification is currently in active development. We are currently publishing the first three chapters, and future chapters will be released as they are developed by our instructional design team. Once all the chapters are available, we will release the certification exam.", + "intro": [ + "This course teaches you the fundamentals of Spanish at the A1 level of the Common European Framework of Reference (CEFR), with lessons focused on professional settings. Each module is broken down into sections:", + "- A Warm-up section for quick review.", + "- Learn sections with new vocabulary and grammar.", + "- Practice sections to check your comprehension and writing skills.", + "- A Review section with key grammar and vocabulary." + ], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", "es-a1-chapter-spanish-fundamentals": "Spanish Fundamentals", @@ -7745,6 +7751,7 @@ "chapters": { "html": "HTML", "css": "CSS", + "computers": "Computers", "responsive-web-design-certification-exam": "Responsive Web Design Certification Exam" }, "modules": { diff --git a/client/i18n/locales/italian/translations.json b/client/i18n/locales/italian/translations.json index fa120cc9b69f9d..03224c7e57eb3c 100644 --- a/client/i18n/locales/italian/translations.json +++ b/client/i18n/locales/italian/translations.json @@ -281,7 +281,7 @@ "disabled": "Le tue certificazioni saranno disabilitate, se impostato su privato.", "private-name": "Il tuo nome non apparirà sulle certificazioni, se impostato su privato.", "claim-legacy": "Una volta che avrai ottenuto le seguenti certificazioni gratuite di freeCodeCamp, sarai in grado di richiedere la {{cert}}:", - "for": "Impostazioni Account per {{username}}", + "for": "Settings for {{username}}", "sound-mode": "Questo aggiunge i piacevoli suoni di una chitarra acustica nel sito. Suonerà mentre scrivi nell'editor, completi sfide, ottieni certificazioni, e altro.", "sound-volume": "Volume Campfire:", "scrollbar-width": "Larghezza barra di scorrimento editor", @@ -315,7 +315,7 @@ "results-for": "Risultati per {{projectTitle}}", "my-profile": "Il mio profilo", "my-name": "Il mio nome", - "my-location": "La mia posizione", + "my-location": "My stated location (freeCodeCamp does not track your actual location)", "my-about": "Le mie informazioni", "my-points": "I miei punti", "my-heatmap": "La mia mappa del calore", @@ -328,12 +328,13 @@ "keyboard-shortcuts": "Abilita le scorciatoie da tastiera" }, "headings": { + "account": "Account", "certs": "Certificazioni", "legacy-certs": "Vecchie certificazioni", "honesty": "Politica di Onestà Accademica", "internet": "La Tua presenza su Internet", "portfolio": "Impostazioni Portfolio", - "privacy": "Impostazioni Privacy", + "privacy": "Privacy", "personal-info": "Informazioni personali" }, "danger": { @@ -362,7 +363,7 @@ }, "email": { "missing": "Non hai un'email associata a questo account.", - "heading": "Impostazioni email", + "heading": "Email", "not-verified": "La tua email non è stata verificata.", "check": "Per favore controlla la tua email, o <0>richiedi una nuova email di verifica qui.", "current": "Email Attuale", @@ -963,7 +964,9 @@ "editor-a11y-on-non-macos": "{{editorName}} editor content. Accessibility mode set to 'on'. Press Ctrl+E to disable or press Alt+F1 for more options.", "terminal-output": "Terminal output", "not-available": "Not available", - "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page." + "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page.", + "pinyin-to-hanzi-input-desc": "This task uses Pinyin-to-Hanzi inputs. Type pinyin with tone numbers (1 to 5). When you enter a correct syllable, it will turn into a Chinese character. If you press backspace after a Chinese character, it will change back to pinyin and remove the last thing you typed: if it's a tone number, the tone is removed; if it's a letter, the letter is removed.", + "pinyin-tone-input-desc": "This task uses Pinyin Tone inputs. Type pinyin with tone numbers (1 to 5). When you enter a tone number, it will be converted to a tone mark. If you press backspace, the last thing you typed is removed: if it's a tone number, the tone is removed; if it's a letter, the letter is removed." }, "flash": { "no-email-in-userinfo": "We could not retrieve an email from your chosen provider. Please try another provider or use the 'Continue with Email' option.", diff --git a/client/i18n/locales/japanese/intro.json b/client/i18n/locales/japanese/intro.json index fba539d8e78126..75165bdfbb7265 100644 --- a/client/i18n/locales/japanese/intro.json +++ b/client/i18n/locales/japanese/intro.json @@ -4507,7 +4507,7 @@ ] }, "lab-rpg-character": { - "title": "Build an RPG character", + "title": "Build an RPG Character", "intro": [ "In this lab you will practice basic python by building an RPG character." ] @@ -7528,8 +7528,14 @@ }, "a1-professional-spanish": { "title": "A1 Professional Spanish Certification (Beta)", - "note": "This certification is currently in active development. While there isn't a claimable certification available for this section at the moment, one will be available soon. In the meantime, you're welcome to explore the courses we have created below.", - "intro": ["Placeholder intro"], + "note": "This certification is currently in active development. We are currently publishing the first three chapters, and future chapters will be released as they are developed by our instructional design team. Once all the chapters are available, we will release the certification exam.", + "intro": [ + "This course teaches you the fundamentals of Spanish at the A1 level of the Common European Framework of Reference (CEFR), with lessons focused on professional settings. Each module is broken down into sections:", + "- A Warm-up section for quick review.", + "- Learn sections with new vocabulary and grammar.", + "- Practice sections to check your comprehension and writing skills.", + "- A Review section with key grammar and vocabulary." + ], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", "es-a1-chapter-spanish-fundamentals": "Spanish Fundamentals", @@ -7745,6 +7751,7 @@ "chapters": { "html": "HTML", "css": "CSS", + "computers": "Computers", "responsive-web-design-certification-exam": "Responsive Web Design Certification Exam" }, "modules": { diff --git a/client/i18n/locales/japanese/translations.json b/client/i18n/locales/japanese/translations.json index 27eeac0b745681..fb244f8274f05d 100644 --- a/client/i18n/locales/japanese/translations.json +++ b/client/i18n/locales/japanese/translations.json @@ -281,7 +281,7 @@ "disabled": "非公開に設定されている場合、認定証は無効化されます。", "private-name": "非公開に設定されている場合、あなたの名前は認定証に表示されません。", "claim-legacy": "以下の freeCodeCamp 認定証を取得すると、{{cert}}を受け取ることができます。", - "for": "{{username}} さんのアカウント設定", + "for": "Settings for {{username}}", "sound-mode": "これは快適なアコースティックギターの音をウェブサイトの至る所へ追加します。エディターにタイプしたり、チャレンジを完了したり、認定証を請求したり、その他いろいろなことをする度に音のフィードバックを受け取ります。", "sound-volume": "キャンプファイアモードの音量:", "scrollbar-width": "エディターのスクロールバーの幅", @@ -315,7 +315,7 @@ "results-for": "「{{projectTitle}}」の結果", "my-profile": "プロフィール", "my-name": "名前", - "my-location": "場所", + "my-location": "My stated location (freeCodeCamp does not track your actual location)", "my-about": "自己紹介", "my-points": "ポイント", "my-heatmap": "ヒートマップ", @@ -328,12 +328,13 @@ "keyboard-shortcuts": "キーボードショートカットを有効にする" }, "headings": { + "account": "Account", "certs": "認定証", "legacy-certs": "レガシー認定証", "honesty": "学問的誠実性ポリシー", "internet": "他サービスのリンク", "portfolio": "ポートフォリオ設定", - "privacy": "プライバシー設定", + "privacy": "Privacy", "personal-info": "ユーザー情報" }, "danger": { @@ -362,7 +363,7 @@ }, "email": { "missing": "このアカウントに関連付けられているメールアドレスがありません。", - "heading": "Eメール設定", + "heading": "Email", "not-verified": "メールアドレスが確認されていません。", "check": "メールを確認するか、<0>こちらから新しい確認メールをリクエストしてください。", "current": "現在のメールアドレス", @@ -963,7 +964,9 @@ "editor-a11y-on-non-macos": "{{editorName}} editor content. Accessibility mode set to 'on'. Press Ctrl+E to disable or press Alt+F1 for more options.", "terminal-output": "Terminal output", "not-available": "Not available", - "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page." + "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page.", + "pinyin-to-hanzi-input-desc": "This task uses Pinyin-to-Hanzi inputs. Type pinyin with tone numbers (1 to 5). When you enter a correct syllable, it will turn into a Chinese character. If you press backspace after a Chinese character, it will change back to pinyin and remove the last thing you typed: if it's a tone number, the tone is removed; if it's a letter, the letter is removed.", + "pinyin-tone-input-desc": "This task uses Pinyin Tone inputs. Type pinyin with tone numbers (1 to 5). When you enter a tone number, it will be converted to a tone mark. If you press backspace, the last thing you typed is removed: if it's a tone number, the tone is removed; if it's a letter, the letter is removed." }, "flash": { "no-email-in-userinfo": "We could not retrieve an email from your chosen provider. Please try another provider or use the 'Continue with Email' option.", diff --git a/client/i18n/locales/korean/intro.json b/client/i18n/locales/korean/intro.json index 5209a575034ddd..4bc48c6f6c065a 100644 --- a/client/i18n/locales/korean/intro.json +++ b/client/i18n/locales/korean/intro.json @@ -4507,7 +4507,7 @@ ] }, "lab-rpg-character": { - "title": "Build an RPG character", + "title": "Build an RPG Character", "intro": [ "In this lab you will practice basic python by building an RPG character." ] @@ -7528,8 +7528,14 @@ }, "a1-professional-spanish": { "title": "A1 Professional Spanish Certification (Beta)", - "note": "This certification is currently in active development. While there isn't a claimable certification available for this section at the moment, one will be available soon. In the meantime, you're welcome to explore the courses we have created below.", - "intro": ["Placeholder intro"], + "note": "This certification is currently in active development. We are currently publishing the first three chapters, and future chapters will be released as they are developed by our instructional design team. Once all the chapters are available, we will release the certification exam.", + "intro": [ + "This course teaches you the fundamentals of Spanish at the A1 level of the Common European Framework of Reference (CEFR), with lessons focused on professional settings. Each module is broken down into sections:", + "- A Warm-up section for quick review.", + "- Learn sections with new vocabulary and grammar.", + "- Practice sections to check your comprehension and writing skills.", + "- A Review section with key grammar and vocabulary." + ], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", "es-a1-chapter-spanish-fundamentals": "Spanish Fundamentals", @@ -7745,6 +7751,7 @@ "chapters": { "html": "HTML", "css": "CSS", + "computers": "Computers", "responsive-web-design-certification-exam": "Responsive Web Design Certification Exam" }, "modules": { diff --git a/client/i18n/locales/korean/translations.json b/client/i18n/locales/korean/translations.json index 8965e8b6527074..3981b73989e230 100644 --- a/client/i18n/locales/korean/translations.json +++ b/client/i18n/locales/korean/translations.json @@ -281,7 +281,7 @@ "disabled": "Your certifications will be disabled, if set to private.", "private-name": "Your name will not appear on your certifications, if this is set to private.", "claim-legacy": "Once you've earned the following freeCodeCamp certifications, you'll be able to claim the {{cert}}:", - "for": "Account Settings for {{username}}", + "for": "Settings for {{username}}", "sound-mode": "This adds the pleasant sound of acoustic guitar throughout the website. You'll get musical feedback as you type in the editor, complete challenges, claim certifications, and more.", "sound-volume": "Campfire Volume:", "scrollbar-width": "Editor Scrollbar Width", @@ -315,7 +315,7 @@ "results-for": "Results for {{projectTitle}}", "my-profile": "My profile", "my-name": "My name", - "my-location": "My location", + "my-location": "My stated location (freeCodeCamp does not track your actual location)", "my-about": "My about", "my-points": "My points", "my-heatmap": "My heatmap", @@ -328,12 +328,13 @@ "keyboard-shortcuts": "Enable Keyboard Shortcuts" }, "headings": { + "account": "Account", "certs": "Certifications", "legacy-certs": "Legacy Certifications", "honesty": "Academic Honesty Policy", "internet": "Your Internet Presence", "portfolio": "Portfolio Settings", - "privacy": "Privacy Settings", + "privacy": "Privacy", "personal-info": "Personal Information" }, "danger": { @@ -362,7 +363,7 @@ }, "email": { "missing": "You do not have an email associated with this account.", - "heading": "Email Settings", + "heading": "Email", "not-verified": "Your email has not been verified.", "check": "Please check your email, or <0>request a new verification email here.", "current": "Current Email", @@ -963,7 +964,9 @@ "editor-a11y-on-non-macos": "{{editorName}} editor content. Accessibility mode set to 'on'. Press Ctrl+E to disable or press Alt+F1 for more options.", "terminal-output": "Terminal output", "not-available": "Not available", - "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page." + "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page.", + "pinyin-to-hanzi-input-desc": "This task uses Pinyin-to-Hanzi inputs. Type pinyin with tone numbers (1 to 5). When you enter a correct syllable, it will turn into a Chinese character. If you press backspace after a Chinese character, it will change back to pinyin and remove the last thing you typed: if it's a tone number, the tone is removed; if it's a letter, the letter is removed.", + "pinyin-tone-input-desc": "This task uses Pinyin Tone inputs. Type pinyin with tone numbers (1 to 5). When you enter a tone number, it will be converted to a tone mark. If you press backspace, the last thing you typed is removed: if it's a tone number, the tone is removed; if it's a letter, the letter is removed." }, "flash": { "no-email-in-userinfo": "We could not retrieve an email from your chosen provider. Please try another provider or use the 'Continue with Email' option.", diff --git a/client/i18n/locales/portuguese/intro.json b/client/i18n/locales/portuguese/intro.json index f702dea3d2e785..4cdb29cb1a0ce5 100644 --- a/client/i18n/locales/portuguese/intro.json +++ b/client/i18n/locales/portuguese/intro.json @@ -7628,8 +7628,14 @@ }, "a1-professional-spanish": { "title": "Certificação de Espanhol Profissional A1 (Beta)", - "note": "Esta certificação está atualmente em desenvolvimento ativo. Embora não haja uma certificação disponível no momento, em breve haverá. Enquanto isso, você pode explorar os cursos que criamos abaixo.", - "intro": ["Introdução de Espaço Reservado"], + "note": "This certification is currently in active development. We are currently publishing the first three chapters, and future chapters will be released as they are developed by our instructional design team. Once all the chapters are available, we will release the certification exam.", + "intro": [ + "This course teaches you the fundamentals of Spanish at the A1 level of the Common European Framework of Reference (CEFR), with lessons focused on professional settings. Each module is broken down into sections:", + "- A Warm-up section for quick review.", + "- Learn sections with new vocabulary and grammar.", + "- Practice sections to check your comprehension and writing skills.", + "- A Review section with key grammar and vocabulary." + ], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Bem-vindo ao A1 Espanhol Profissional", "es-a1-chapter-spanish-fundamentals": "Fundamentos do Espanhol", @@ -7845,6 +7851,7 @@ "chapters": { "html": "HTML", "css": "CSS", + "computers": "Computadores", "responsive-web-design-certification-exam": "Exame de Certificação de Design Responsivo para a Web" }, "modules": { diff --git a/client/i18n/locales/portuguese/translations.json b/client/i18n/locales/portuguese/translations.json index db8a17380c698b..ec9784d3eb7ebc 100644 --- a/client/i18n/locales/portuguese/translations.json +++ b/client/i18n/locales/portuguese/translations.json @@ -281,7 +281,7 @@ "disabled": "Suas certificações serão desabilitadas ao configurar como privado.", "private-name": "Seu nome não aparecerá nas certificações, se isto estiver definido como privado.", "claim-legacy": "Após receber os seguintes certificados do freeCodeCamp, você poderá reivindicar o(s) {{cert}}:", - "for": "Configurações de conta para {{username}}", + "for": "Configurações para {{username}}", "sound-mode": "Adiciona o som agradável de uma guitarra acústica em todo o site. Você receberá feedback musical ao digitar no editor, completar desafios, solicitar certificações e muito mais.", "sound-volume": "Volume do modo fogueira:", "scrollbar-width": "Largura da barra de rolagem do editor", @@ -315,7 +315,7 @@ "results-for": "Resultados para {{projectTitle}}", "my-profile": "Meu perfil", "my-name": "Meu nome", - "my-location": "Minha localização", + "my-location": "Meu local declarado (o freeCodeCamp não rastreia a sua localização atual)", "my-about": "Sobre mim", "my-points": "Meus pontos", "my-heatmap": "Meu progresso", @@ -328,12 +328,13 @@ "keyboard-shortcuts": "Habilitar teclas de atalho" }, "headings": { + "account": "Conta", "certs": "Certificações", "legacy-certs": "Certificações legadas", "honesty": "Política de honestidade acadêmica", "internet": "Sua presença na internet", "portfolio": "Configurações do portfólio", - "privacy": "Configurações de privacidade", + "privacy": "Privacidade", "personal-info": "Informações pessoais" }, "danger": { @@ -362,7 +363,7 @@ }, "email": { "missing": "Você não tem um e-mail associado a esta conta.", - "heading": "Configurações de e-mail", + "heading": "E-mail", "not-verified": "O seu e-mail não foi verificado.", "check": "Verifique seu e-mail ou <0>solicite um novo e-mail de verificação aqui.", "current": "E-mail atual", @@ -963,7 +964,9 @@ "editor-a11y-on-non-macos": "{{editorName}} conteúdo do editor. Modo de acessibilidade definido como 'ligado'. Pressione Ctrl+E para desativar ou pressione Alt+F1 para mais opções.", "terminal-output": "Saída do terminal", "not-available": "Não disponível", - "interactive-editor-desc": "Transforme exemplos de código estático em editores interativos. Isso permite que você edite e execute o código diretamente na página." + "interactive-editor-desc": "Transforme exemplos de código estático em editores interativos. Isso permite que você edite e execute o código diretamente na página.", + "pinyin-to-hanzi-input-desc": "Esta tarefa usa entradas de Pinyin para Hanzi. Digite o pinyin com os números do tonalidade (de 1 a 5). Quando você inserir uma sílaba correta, ela se tornará um caractere chinês. Se você pressionar backspace após um caractere chinês, mudará de volta para pinyin e removerá a última coisa que você digitou: se for um número de tonalidade, a tonalidade será removida; se for uma letra, ela será removida.", + "pinyin-tone-input-desc": "Esta tarefa usa entradas de tonalidade do Pinyin. Digite o pinyin com números de tonalidade (de 1 a 5). Quando você inserir um número, ele será convertido em uma marca tonal. Se você pressionar backspace, a última coisa que digitou será removida: se for uma tonalidade de número, ela será removida; se for uma letra, a letra será removida." }, "flash": { "no-email-in-userinfo": "Não foi possível recuperar um e-mail do provedor escolhido. Por favor, tente outro provedor ou use a opção 'Continuar com o Email'.", diff --git a/client/i18n/locales/swahili/intro.json b/client/i18n/locales/swahili/intro.json index d2ab9cc68541e1..48c63738940413 100644 --- a/client/i18n/locales/swahili/intro.json +++ b/client/i18n/locales/swahili/intro.json @@ -4507,7 +4507,7 @@ ] }, "lab-rpg-character": { - "title": "Build an RPG character", + "title": "Build an RPG Character", "intro": [ "In this lab you will practice basic python by building an RPG character." ] @@ -7528,8 +7528,14 @@ }, "a1-professional-spanish": { "title": "A1 Professional Spanish Certification (Beta)", - "note": "This certification is currently in active development. While there isn't a claimable certification available for this section at the moment, one will be available soon. In the meantime, you're welcome to explore the courses we have created below.", - "intro": ["Placeholder intro"], + "note": "This certification is currently in active development. We are currently publishing the first three chapters, and future chapters will be released as they are developed by our instructional design team. Once all the chapters are available, we will release the certification exam.", + "intro": [ + "This course teaches you the fundamentals of Spanish at the A1 level of the Common European Framework of Reference (CEFR), with lessons focused on professional settings. Each module is broken down into sections:", + "- A Warm-up section for quick review.", + "- Learn sections with new vocabulary and grammar.", + "- Practice sections to check your comprehension and writing skills.", + "- A Review section with key grammar and vocabulary." + ], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", "es-a1-chapter-spanish-fundamentals": "Spanish Fundamentals", @@ -7745,6 +7751,7 @@ "chapters": { "html": "HTML", "css": "CSS", + "computers": "Computers", "responsive-web-design-certification-exam": "Responsive Web Design Certification Exam" }, "modules": { diff --git a/client/i18n/locales/swahili/translations.json b/client/i18n/locales/swahili/translations.json index 9f8b4ded111b3c..159f8b7e39f405 100644 --- a/client/i18n/locales/swahili/translations.json +++ b/client/i18n/locales/swahili/translations.json @@ -281,7 +281,7 @@ "disabled": "Uidhinishaji wako utafichwa ukiwekwa kuwa wa faragha.", "private-name": "Jina lako halitaonekana kwenye vyeti vyako ikiwa hii itawekwa kuwa ya faragha.", "claim-legacy": "Ukishajishindia vyeti vifuatavyo vya freeCodeCamp, utaweza kudai {{cert}}:", - "for": "Mipangilio ya Akaunti ya {{username}}", + "for": "Settings for {{username}}", "sound-mode": "Hii inaongeza sauti ya kupendeza ya gitaa la akustika kwenye tovuti. Utapata maoni ya muziki unapoandika kwenye kihariri, unapokamilisha changamoto, unapopata cheti na zaidi.", "sound-volume": "Sauti ya Campfire:", "scrollbar-width": "Upana wa Upau wa kusogeza wa Kihariri", @@ -315,7 +315,7 @@ "results-for": "Results for {{projectTitle}}", "my-profile": "Wasifu wangu", "my-name": "Jina langu", - "my-location": "Eneo langu", + "my-location": "My stated location (freeCodeCamp does not track your actual location)", "my-about": "Kunihusu", "my-points": "Pointi zangu", "my-heatmap": "Ramani yangu", @@ -328,12 +328,13 @@ "keyboard-shortcuts": "Wezesha Njia za Mkato za Kibodi" }, "headings": { + "account": "Account", "certs": "Vyeti", "legacy-certs": "Vyeti vya Legacy", "honesty": "Sera ya Uaminifu ya Kiakademia", "internet": "Uwepo Wako wa Mtandao", "portfolio": "Mipangilio ya Wasifu", - "privacy": "Mipangilio ya Faragha", + "privacy": "Privacy", "personal-info": "Taarifa za Kibinafsi" }, "danger": { @@ -362,7 +363,7 @@ }, "email": { "missing": "Huna barua pepe inayohusishwa na akaunti hii.", - "heading": "Mipangilio ya Barua pepe", + "heading": "Email", "not-verified": "Barua pepe yako haijathibitishwa.", "check": "Tafadhali angalia barua pepe yako, au <0>omba barua pepe mpya ya uthibitishaji hapa.", "current": "Barua pepe ya Sasa", @@ -963,7 +964,9 @@ "editor-a11y-on-non-macos": "{{editorName}} editor content. Accessibility mode set to 'on'. Press Ctrl+E to disable or press Alt+F1 for more options.", "terminal-output": "Terminal output", "not-available": "Not available", - "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page." + "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page.", + "pinyin-to-hanzi-input-desc": "This task uses Pinyin-to-Hanzi inputs. Type pinyin with tone numbers (1 to 5). When you enter a correct syllable, it will turn into a Chinese character. If you press backspace after a Chinese character, it will change back to pinyin and remove the last thing you typed: if it's a tone number, the tone is removed; if it's a letter, the letter is removed.", + "pinyin-tone-input-desc": "This task uses Pinyin Tone inputs. Type pinyin with tone numbers (1 to 5). When you enter a tone number, it will be converted to a tone mark. If you press backspace, the last thing you typed is removed: if it's a tone number, the tone is removed; if it's a letter, the letter is removed." }, "flash": { "no-email-in-userinfo": "We could not retrieve an email from your chosen provider. Please try another provider or use the 'Continue with Email' option.", diff --git a/client/i18n/locales/ukrainian/intro.json b/client/i18n/locales/ukrainian/intro.json index 8d5cee1d7a7b79..9c0f3e642410ed 100644 --- a/client/i18n/locales/ukrainian/intro.json +++ b/client/i18n/locales/ukrainian/intro.json @@ -4497,7 +4497,7 @@ ] }, "lab-rpg-character": { - "title": "Створіть RPG-персонажа", + "title": "Build an RPG Character", "intro": [ "У цій лабораторній роботі ви попрактикуєтеся в основах Python, створивши RPG-персонажа." ] @@ -7514,8 +7514,14 @@ }, "a1-professional-spanish": { "title": "A1 Professional Spanish Certification (Beta)", - "note": "This certification is currently in active development. While there isn't a claimable certification available for this section at the moment, one will be available soon. In the meantime, you're welcome to explore the courses we have created below.", - "intro": ["Placeholder intro"], + "note": "This certification is currently in active development. We are currently publishing the first three chapters, and future chapters will be released as they are developed by our instructional design team. Once all the chapters are available, we will release the certification exam.", + "intro": [ + "This course teaches you the fundamentals of Spanish at the A1 level of the Common European Framework of Reference (CEFR), with lessons focused on professional settings. Each module is broken down into sections:", + "- A Warm-up section for quick review.", + "- Learn sections with new vocabulary and grammar.", + "- Practice sections to check your comprehension and writing skills.", + "- A Review section with key grammar and vocabulary." + ], "chapters": { "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish", "es-a1-chapter-spanish-fundamentals": "Spanish Fundamentals", @@ -7731,6 +7737,7 @@ "chapters": { "html": "HTML", "css": "CSS", + "computers": "Computers", "responsive-web-design-certification-exam": "Responsive Web Design Certification Exam" }, "modules": { diff --git a/client/i18n/locales/ukrainian/translations.json b/client/i18n/locales/ukrainian/translations.json index 13efac51703ebb..a48d82c9efa8cf 100644 --- a/client/i18n/locales/ukrainian/translations.json +++ b/client/i18n/locales/ukrainian/translations.json @@ -281,7 +281,7 @@ "disabled": "Ваші сертифікації будуть відключені, коли ввімкнено режим приватного перегляду.", "private-name": "Ваше ім’я не буде показуватися на сертифікаціях, якщо ввімкнено режим приватного перегляду.", "claim-legacy": "Як тільки ви виконаєте завдання наступних сертифікацій freeCodeCamp, ви зможете отримати {{cert}}:", - "for": "Налаштування облікового запису для {{username}}", + "for": "Settings for {{username}}", "sound-mode": "Це додає приємне звучання акустичної гітари на всьому вебсайті. Ви почуєте музичний супровід, коли будете писати у редакторі, при завершенні випробувань, при затвердженні сертифікацій та інше.", "sound-volume": "Гучність багаття:", "scrollbar-width": "Ширина смуги прокрутки редактора", @@ -315,7 +315,7 @@ "results-for": "Результати для {{projectTitle}}", "my-profile": "Мій профіль", "my-name": "Моє ім'я", - "my-location": "Моє місцеперебування", + "my-location": "My stated location (freeCodeCamp does not track your actual location)", "my-about": "Моя біографія", "my-points": "Мої бали", "my-heatmap": "Моя теплокарта", @@ -328,12 +328,13 @@ "keyboard-shortcuts": "Дозволити клавіатурні скорочення" }, "headings": { + "account": "Account", "certs": "Сертифікації", "legacy-certs": "Застарілі сертифікації", "honesty": "Політика академічної доброчесності", "internet": "Присутність в інтернеті", "portfolio": "Налаштування портфоліо", - "privacy": "Налаштування конфіденційності", + "privacy": "Privacy", "personal-info": "Особиста інформація" }, "danger": { @@ -362,7 +363,7 @@ }, "email": { "missing": "У вас немає електронної пошти, пов’язаної з цим обліковим записом.", - "heading": "Налаштування електронної пошти", + "heading": "Email", "not-verified": "Вашу електронну пошту не підтверджено.", "check": "Будь ласка, перевірте свою електронну пошту, або <0>надішліть запит на новий лист для підтвердження.", "current": "Поточна адреса електронної пошти", @@ -963,7 +964,9 @@ "editor-a11y-on-non-macos": "Вміст редактора {{editorName}}. Ввімкнено режим доступності. Натисніть Ctrl+E, щоб вимкнути його, або Alt+F1, щоб переглянути більше функцій.", "terminal-output": "Вивід терміналу", "not-available": "Недоступно", - "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page." + "interactive-editor-desc": "Turn static code examples into interactive editors. This allows you to edit and run the code directly on the page.", + "pinyin-to-hanzi-input-desc": "This task uses Pinyin-to-Hanzi inputs. Type pinyin with tone numbers (1 to 5). When you enter a correct syllable, it will turn into a Chinese character. If you press backspace after a Chinese character, it will change back to pinyin and remove the last thing you typed: if it's a tone number, the tone is removed; if it's a letter, the letter is removed.", + "pinyin-tone-input-desc": "This task uses Pinyin Tone inputs. Type pinyin with tone numbers (1 to 5). When you enter a tone number, it will be converted to a tone mark. If you press backspace, the last thing you typed is removed: if it's a tone number, the tone is removed; if it's a letter, the letter is removed." }, "flash": { "no-email-in-userinfo": "Не вдалось отримати електронну пошту від вказаного провайдера. Спробуйте іншого провайдера або виберіть опцію «Continue with Email».", diff --git a/client/package.json b/client/package.json index 6131bcab33aae2..a23800c22d5750 100644 --- a/client/package.json +++ b/client/package.json @@ -35,8 +35,7 @@ "serve-ci": "serve -l 8000 -c serve.json public", "prestand-alone": "pnpm run prebuild", "stand-alone": "gatsby develop", - "test": "vitest", - "validate-keys": "tsx --tsconfig ../tsconfig.json ../tools/scripts/lint/validate-keys" + "test": "vitest" }, "dependencies": { "@babel/plugin-proposal-export-default-from": "7.23.3", @@ -94,6 +93,7 @@ "nanoid": "3.3.7", "normalize-url": "6.1.0", "path-browserify": "1.0.1", + "pinyin-tone": "2.4.0", "postcss": "8.4.35", "prismjs": "1.29.0", "process": "0.11.10", @@ -143,6 +143,7 @@ "@testing-library/jest-dom": "^6.8.0", "@testing-library/react": "12.1.5", "@testing-library/react-hooks": "^8.0.1", + "@testing-library/user-event": "14.6.1", "@total-typescript/ts-reset": "^0.5.0", "@types/canvas-confetti": "^1.6.0", "@types/gatsbyjs__reach-router": "1.3.0", diff --git a/client/src/assets/chapter-icon.tsx b/client/src/assets/chapter-icon.tsx index 5d9fc02bc73dd3..d9a1e6e32be670 100644 --- a/client/src/assets/chapter-icon.tsx +++ b/client/src/assets/chapter-icon.tsx @@ -1,5 +1,9 @@ import React from 'react'; -import { FsdChapters } from '../../../shared-dist/config/chapters'; +import { + A1SpanishChapters, + FsdChapters, + A1ChineseChapters +} from '../../../shared-dist/config/chapters'; import DatabaseIcon from './icons/database'; import JavaScriptIcon from './icons/javascript'; import ReactIcon from './icons/react'; @@ -10,6 +14,15 @@ import Css from './icons/css'; import NodeIcon from './icons/node'; import Python from './icons/python'; import Graduation from './icons/graduation'; +import { + faComments, + faCubes, + faDoorOpen, + faHands, + faIdCard, + faPeopleGroup +} from '@fortawesome/free-solid-svg-icons'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; const iconMap = { [FsdChapters.Welcome]: FreeCodeCampIcon, @@ -29,7 +42,16 @@ const iconMap = { [FsdChapters.RdbExam]: Graduation, [FsdChapters.Bed]: NodeIcon, [FsdChapters.BedExam]: Graduation, - [FsdChapters.FsdExam]: Graduation + [FsdChapters.FsdExam]: Graduation, + [A1ChineseChapters.zhA1Welcome]: faDoorOpen, + [A1ChineseChapters.zhA1PinYin]: faCubes, + [A1ChineseChapters.zhA1Greetings]: faComments, + [A1ChineseChapters.zhA1Family]: faPeopleGroup, + [A1ChineseChapters.zhA1Expressing]: faHands, + [A1SpanishChapters.esA1Welcome]: faDoorOpen, + [A1SpanishChapters.esA1Fundamentals]: faCubes, + [A1SpanishChapters.esA1Greetings]: faComments, + [A1SpanishChapters.esA1Details]: faIdCard }; type ChapterIconProps = { @@ -40,5 +62,9 @@ export function ChapterIcon(props: ChapterIconProps): JSX.Element { const { chapter, ...iconProps } = props; const Icon = iconMap[chapter] ?? ResponsiveDesign; + if (typeof Icon === 'object') { + return ; + } + return ; } diff --git a/client/src/client-only-routes/show-certification.tsx b/client/src/client-only-routes/show-certification.tsx index 6d7c1724c0b3d9..9172590dfab150 100644 --- a/client/src/client-only-routes/show-certification.tsx +++ b/client/src/client-only-routes/show-certification.tsx @@ -240,7 +240,7 @@ const ShareCertBtns = ({ block={true} size='large' variant='primary' - href={`https://twitter.com/intent/tweet?text=${t('profile.tweet', { + href={`https://x.com/intent/post?text=${t('profile.tweet', { certTitle: urlFriendlyCertTitle, certURL })}`} diff --git a/client/src/client-only-routes/show-settings.css b/client/src/client-only-routes/show-settings.css new file mode 100644 index 00000000000000..37f6d3f70ba459 --- /dev/null +++ b/client/src/client-only-routes/show-settings.css @@ -0,0 +1,71 @@ +.settings-container { + display: flex; + min-height: calc(100vh - var(--header-height)); +} + +.settings-main { + flex: 4; + padding: 1rem; +} + +.settings-sidebar-nav ul { + list-style-type: none; + padding-left: 0; +} + +.settings-sidebar-nav ul li { + margin-bottom: 0.5rem; +} + +.settings-sidebar-nav { + flex: 1; + position: sticky; + top: var(--header-height); + padding: 1rem 0; + overflow-y: scroll; + height: calc(100vh - var(--header-height)); + border-right: 3px solid var(--tertiary-background); +} + +.settings-sidebar-nav .sidebar-nav-section-heading { + display: block; + font-size: 1rem; + font-weight: 600; + margin-bottom: 0.5rem; + padding-left: 1rem; + text-decoration: none; + cursor: pointer; +} + +.settings-sidebar-nav .sidebar-nav-anchor-btn { + display: inline-block; + width: 100%; + text-decoration: none; + cursor: pointer; + padding: 0 1rem 0rem 2rem; +} + +.settings-sidebar-nav .sidebar-nav-section-heading.active, +.settings-sidebar-nav .sidebar-nav-anchor-btn.active { + box-shadow: inset 3px 0 0 0 var(--highlight-color); + background-color: var(--tertiary-background); +} + +@media (max-width: 980px) { + .settings-sidebar-nav { + display: none; + } + + .settings-container { + display: block; + } +} + +.settings-user-token-heading, +.settings-danger-zone-heading, +.settings-exam-token-heading { + color: inherit; + font-size: inherit; + margin: 0; + text-align: center; +} diff --git a/client/src/client-only-routes/show-settings.tsx b/client/src/client-only-routes/show-settings.tsx index ac563c692b73e6..e84bd0b798d58b 100644 --- a/client/src/client-only-routes/show-settings.tsx +++ b/client/src/client-only-routes/show-settings.tsx @@ -3,22 +3,22 @@ import Helmet from 'react-helmet'; import { useTranslation } from 'react-i18next'; import { connect } from 'react-redux'; import { createSelector } from 'reselect'; -import { scroller } from 'react-scroll'; - -import { Container, Spacer } from '@freecodecamp/ui'; +import { Spacer } from '@freecodecamp/ui'; import store from 'store'; +import { scroller, Element as ScrollElement } from 'react-scroll'; import envData from '../../config/env.json'; import { createFlashMessage } from '../components/Flash/redux'; import { Loader } from '../components/helpers'; import Certification from '../components/settings/certification'; -import MiscSettings from '../components/settings/misc-settings'; +import Account from '../components/settings/account'; import DangerZone from '../components/settings/danger-zone'; import Email from '../components/settings/email'; import Honesty from '../components/settings/honesty'; import Privacy from '../components/settings/privacy'; import UserToken from '../components/settings/user-token'; import ExamToken from '../components/settings/exam-token'; +import SettingsSidebarNav from '../components/settings/settings-sidebar-nav'; import { hardGoTo as navigate } from '../redux/actions'; import { signInLoadingSelector, @@ -37,6 +37,8 @@ import { resetMyEditorLayout } from '../redux/settings/actions'; +import './show-settings.css'; + const { apiLocation } = envData; // TODO: update types for actions @@ -171,78 +173,99 @@ export function ShowSettings(props: ShowSettingsProps): JSX.Element { return ( <> - -
+
+ +
-

- {t('settings.for', { username: username })} -

- + +

+ {t('settings.for', { username: username })} +

+
+ + + + - + + + - + + + - + + + - - + + + + + + + + {userToken && ( <> + + + - )} - - + + +
- +
); } diff --git a/client/src/components/layouts/global.css b/client/src/components/layouts/global.css index 0fcd84f8166c31..2463f2e8bc2bcd 100644 --- a/client/src/components/layouts/global.css +++ b/client/src/components/layouts/global.css @@ -12,43 +12,17 @@ body { background: var(--secondary-background); } -/* This is to override Tailwind as it sets the font-weight to `bolder`. - TODO: Move this rule to @freecodecamp/ui. */ -b, -strong { - font-weight: bold; -} - -/* TODO: Move this rule to @freecodecamp/ui. */ -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; -} - -/* TODO: Move this rule to @freecodecamp/ui. (Though some styles might need to be dropped). */ legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; color: #333; border: 0; border-bottom: 1px solid #e5e5e5; } -/* TODO: Move this rule to @freecodecamp/ui. */ blockquote { - padding: 10px 20px; - margin: 0 0 20px; - font-size: 17.5px; border-left: 5px solid #eeeeee; } -/* TODO: Move this rule to @freecodecamp/ui. */ +/* TODO: Move this rule to components/Intro/intro.css. */ blockquote footer, blockquote small, blockquote .small { @@ -58,37 +32,13 @@ blockquote .small { color: var(--gray-45); } -/* TODO: Move this rule to @freecodecamp/ui. */ +/* TODO: Move this rule to components/Intro/intro.css. */ blockquote footer:before, blockquote small:before, blockquote .small:before { content: '\2014 \00A0'; } -/* TODO: Move this rule to @freecodecamp/ui. */ -ul { - margin-top: 0; - margin-bottom: 10px; - padding-inline-start: 40px; - list-style-type: disc; -} - -/* TODO: Move this rule to @freecodecamp/ui. */ -ol { - margin-top: 0; - margin-bottom: 10px; - padding-inline-start: 40px; - list-style-type: decimal; -} - -/* TODO: Move this rule to @freecodecamp/ui. */ -hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid var(--quaternary-background); -} - rt { font-size: 0.8rem; } diff --git a/client/src/components/layouts/variables.css b/client/src/components/layouts/variables.css index cef8009552130e..d083c9637a2efd 100644 --- a/client/src/components/layouts/variables.css +++ b/client/src/components/layouts/variables.css @@ -26,8 +26,8 @@ --green-dark: #00471b; --red-light: #ffadad; --red-dark: #850000; - --love-light: #f8577c; - --love-dark: #f82153; + --love-light: var(--red30); + --love-dark: var(--red70); --editor-background-light: #fffffe; --editor-background-dark: #2a2b40; --focus-outline-color: var(--blue-mid); diff --git a/client/src/components/profile/components/internet.tsx b/client/src/components/profile/components/internet.tsx index d226df839d979a..98a7b00a5e8241 100644 --- a/client/src/components/profile/components/internet.tsx +++ b/client/src/components/profile/components/internet.tsx @@ -204,12 +204,10 @@ const InternetSettings = ({ controlId='internet-twitter' validationState={twitterValidation} > - - Twitter - + X { currentCerts: [ { show: isA2EnglishCert, - title: 'A2 English for Developers Certification', + title: 'A2 English for Developers Certification (Beta)', certSlug: Certification.A2English }, { diff --git a/client/src/components/settings/misc-settings.tsx b/client/src/components/settings/account.tsx similarity index 82% rename from client/src/components/settings/misc-settings.tsx rename to client/src/components/settings/account.tsx index ca83fe77b5e5c9..34cd6ca9a39f45 100644 --- a/client/src/components/settings/misc-settings.tsx +++ b/client/src/components/settings/account.tsx @@ -3,9 +3,10 @@ import { useTranslation } from 'react-i18next'; import { Button, Spacer } from '@freecodecamp/ui'; import { FullWidthRow } from '../helpers'; -import SoundSettings from '../../components/settings/sound'; -import KeyboardShortcutsSettings from '../../components/settings/keyboard-shortcuts'; -import ScrollbarWidthSettings from '../../components/settings/scrollbar-width'; +import SoundSettings from './sound'; +import KeyboardShortcutsSettings from './keyboard-shortcuts'; +import ScrollbarWidthSettings from './scrollbar-width'; +import SectionHeader from './section-header'; type MiscSettingsProps = { keyboardShortcuts: boolean; @@ -27,8 +28,8 @@ const MiscSettings = ({ const { t } = useTranslation(); return ( - <> - +
+ {t('settings.headings.account')} - +
); }; diff --git a/client/src/components/settings/certification.tsx b/client/src/components/settings/certification.tsx index f25cc723dd1f98..b0f4712b487327 100644 --- a/client/src/components/settings/certification.tsx +++ b/client/src/components/settings/certification.tsx @@ -17,7 +17,6 @@ import { FullWidthRow, Link } from '../helpers'; import { SolutionDisplayWidget } from '../solution-display-widget'; import { Certification, - certSlugTypeMap, currentCertifications, legacyCertifications, upcomingCertifications @@ -145,8 +144,7 @@ const LegacyFullStack = (props: CertificationSettingsProps) => { const certLocation = `/certification/${username}/${certSlug}`; const handleClaim = - (certSlug: keyof typeof certSlugTypeMap) => - (e: MouseEvent) => { + (certSlug: Certification) => (e: MouseEvent) => { e.preventDefault(); return isHonest @@ -155,60 +153,66 @@ const LegacyFullStack = (props: CertificationSettingsProps) => { }; return ( - - -

- {t(`certification.title.${Certification.LegacyFullStack}-cert`)} -

-
-

- {t('settings.claim-legacy', { - cert: t(`certification.title.${Certification.LegacyFullStack}-cert`) - })} -

-
    -
  • {t(`certification.title.${Certification.RespWebDesign}`)}
  • -
  • {t(`certification.title.${Certification.JsAlgoDataStruct}`)}
  • -
  • {t(`certification.title.${Certification.FrontEndDevLibs}`)}
  • -
  • {t(`certification.title.${Certification.DataVis}`)}
  • -
  • {t(`certification.title.${Certification.BackEndDevApis}`)}
  • -
  • {t(`certification.title.${Certification.LegacyInfoSecQa}`)}
  • -
-
+ + + +

+ {t(`certification.title.${Certification.LegacyFullStack}`)} +

+
+

+ {t('settings.claim-legacy', { + cert: t( + `certification.title.${Certification.LegacyFullStack}-cert` + ) + })} +

+
    +
  • {t(`certification.title.${Certification.RespWebDesign}`)}
  • +
  • + {t(`certification.title.${Certification.JsAlgoDataStruct}`)} +
  • +
  • {t(`certification.title.${Certification.FrontEndDevLibs}`)}
  • +
  • {t(`certification.title.${Certification.DataVis}`)}
  • +
  • {t(`certification.title.${Certification.BackEndDevApis}`)}
  • +
  • {t(`certification.title.${Certification.LegacyInfoSecQa}`)}
  • +
+
-
- {isFullStackCert ? ( - - ) : ( - - )} -
- -
+
+ {isFullStackCert ? ( + + ) : ( + + )} +
+ +
+ ); }; @@ -385,7 +389,9 @@ function CertificationSettings(props: CertificationSettingsProps) { ))} - {t('settings.headings.legacy-certs')} + + {t('settings.headings.legacy-certs')} + {legacyCertifications.map(cert => ( diff --git a/client/src/components/settings/danger-zone.tsx b/client/src/components/settings/danger-zone.tsx index 55edc5386ecd0a..4248bc6ca1a676 100644 --- a/client/src/components/settings/danger-zone.tsx +++ b/client/src/components/settings/danger-zone.tsx @@ -43,7 +43,11 @@ function DangerZone({ deleteAccount, resetProgress, t }: DangerZoneProps) { return ( - {t('settings.danger.heading')} + +

+ {t('settings.danger.heading')} +

+

{t('settings.danger.be-careful')}

diff --git a/client/src/components/settings/exam-token.tsx b/client/src/components/settings/exam-token.tsx index a9cfee7ae7bcd3..ca47575d6b1a35 100644 --- a/client/src/components/settings/exam-token.tsx +++ b/client/src/components/settings/exam-token.tsx @@ -95,7 +95,11 @@ function ExamToken({ email }: ExamTokenProps) { - {t('exam-token.exam-token')} + +

+ {t('exam-token.exam-token')} +

+

{t('exam-token.note')}

{t('exam-token.invalidation-2')} diff --git a/client/src/components/settings/section-header.tsx b/client/src/components/settings/section-header.tsx index 85d7a1f2a8c276..fb98439f22500c 100644 --- a/client/src/components/settings/section-header.tsx +++ b/client/src/components/settings/section-header.tsx @@ -4,21 +4,12 @@ import FullWidthRow from '../helpers/full-width-row'; type SectionHeaderProps = { children: string | React.ReactNode | React.ReactElement; - dataPlaywrightTestLabel?: string; }; -function SectionHeader({ - children, - dataPlaywrightTestLabel -}: SectionHeaderProps): JSX.Element { +function SectionHeader({ children }: SectionHeaderProps): JSX.Element { return ( -

- {children} -

+

{children}


); diff --git a/client/src/components/settings/settings-sidebar-nav.tsx b/client/src/components/settings/settings-sidebar-nav.tsx new file mode 100644 index 00000000000000..68d326620b4abb --- /dev/null +++ b/client/src/components/settings/settings-sidebar-nav.tsx @@ -0,0 +1,232 @@ +import React from 'react'; +import { useTranslation } from 'react-i18next'; +import { Link as ScrollLink } from 'react-scroll'; +import { + currentCertifications, + legacyCertifications, + legacyFullStackCertification, + upcomingCertifications +} from '../../../../shared-dist/config/certification-settings'; +import env from '../../../config/env.json'; + +type SettingsSidebarNavProps = { + userToken: string | null; +}; + +const { showUpcomingChanges } = env; + +function SettingsSidebarNav({ + userToken +}: SettingsSidebarNavProps): JSX.Element { + const { t } = useTranslation(); + const allLegacyCertifications = [ + ...legacyFullStackCertification, + ...legacyCertifications + ]; + + return ( + + ); +} + +SettingsSidebarNav.displayName = 'SettingsSidebarNav'; + +export default SettingsSidebarNav; diff --git a/client/src/components/settings/user-token.tsx b/client/src/components/settings/user-token.tsx index 0ef7a0da632915..8973f82eee647d 100644 --- a/client/src/components/settings/user-token.tsx +++ b/client/src/components/settings/user-token.tsx @@ -29,7 +29,11 @@ class UserToken extends Component { return ( - {t('user-token.title')} + +

+ {t('user-token.title')} +

+

{t('user-token.delete-p1')}

diff --git a/client/src/components/share/share-template.tsx b/client/src/components/share/share-template.tsx index 8f9b8ad3759902..edb3db7c1c0c45 100644 --- a/client/src/components/share/share-template.tsx +++ b/client/src/components/share/share-template.tsx @@ -26,7 +26,7 @@ export const ShareTemplate: React.ComponentType = ({