Learn Web Development in 2024
+Stay ahead of the curve with the latest trends in web development. Discover what's new and exciting in 2024
+ Read More +switch statements, other types of conditionals and more."
]
},
"quiz-javascript-comparisons-and-conditionals": {
diff --git a/curriculum/challenges/english/25-front-end-development/review-javascript-comparisons-and-conditionals/6723c554025f449f4f39c3f5.md b/curriculum/challenges/english/25-front-end-development/review-javascript-comparisons-and-conditionals/6723c554025f449f4f39c3f5.md
index 1aa8566273c97c..0c66d51a19231c 100644
--- a/curriculum/challenges/english/25-front-end-development/review-javascript-comparisons-and-conditionals/6723c554025f449f4f39c3f5.md
+++ b/curriculum/challenges/english/25-front-end-development/review-javascript-comparisons-and-conditionals/6723c554025f449f4f39c3f5.md
@@ -9,7 +9,56 @@ dashedName: review-javascript-comparisons-and-conditionals
Review the concepts below to prepare for the upcoming quiz.
+## Comparisons and the `null` and `undefined` Data Types
+- **Comparisons and `undefined`**: A variable is `undefined` when it has been declared but hasn't been assigned a value. It's the default value of uninitialized variables and function parameters that weren't provided an argument. `undefined` converts to `NaN` in numeric contexts, which makes all numeric comparisons with `undefined` return `false`.
+
+```js
+console.log(undefined > 0); // false
+console.log(undefined < 0); // false
+console.log(undefined == 0); // false
+```
+
+- **Comparisons and `null`**: The `null` type represents the intentional absence of a value. When using the equality operator, `null` and `undefined` are considered equal. However, when using the strict equality operator (`===`), which checks both value and type without performing type coercion, `null` and `undefined` are not equal:
+
+```js
+console.log(null == undefined); // true
+console.log(null === undefined); // false
+```
+
+## `switch` Statements
+
+- **Definition**: A `switch` statement evaluates an expression and matches its value against a series of `case` clauses. When a match is found, the code block associated with that case is executed.
+
+```js
+const dayOfWeek = 3;
+
+switch (dayOfWeek) {
+ case 1:
+ console.log("It's Monday! Time to start the week strong.");
+ break;
+ case 2:
+ console.log("It's Tuesday! Keep the momentum going.");
+ break;
+ case 3:
+ console.log("It's Wednesday! We're halfway there.");
+ break;
+ case 4:
+ console.log("It's Thursday! Almost the weekend.");
+ break;
+ case 5:
+ console.log("It's Friday! The weekend is near.");
+ break;
+ case 6:
+ console.log("It's Saturday! Enjoy your weekend.");
+ break;
+ case 7:
+ console.log("It's Sunday! Rest and recharge.");
+ break;
+ default:
+ console.log("Invalid day! Please enter a number between 1 and 7.");
+}
+```
# --assignment--
From 43d3f37fb4d9cff92c08f3ce451881f7180a74f9 Mon Sep 17 00:00:00 2001
From: freeCodeCamp's Camper Bot grid-template-columns, grid-gap and more."
]
},
"quiz-css-grid": {
@@ -2424,9 +2428,12 @@
"In these lecture videos, you will learn about animations and accessibility."
]
},
- "dpaq": {
- "title": "120",
- "intro": []
+ "workshop-ferris-wheel": {
+ "title": "Build an Animated Ferris Wheel",
+ "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."
+ ]
},
"lab-moon-orbit": {
"title": "Build a Moon Orbit",
@@ -2450,7 +2457,8 @@
"review-css-animations": {
"title": "CSS Animations Review",
"intro": [
- "Review the CSS Animations concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on working with CSS animations, you first need to review.",
+ "Open up this page to review concepts including prefers-reduced-motion, the @keyframes rule and more."
]
},
"quiz-css-animations": {
@@ -2461,7 +2469,10 @@
},
"review-css": {
"title": "CSS Review",
- "intro": ["Review the CSS concepts to prepare for the upcoming exam."]
+ "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."
+ ]
},
"wvjx": {
"title": "127",
@@ -2501,7 +2512,8 @@
"review-javascript-variables-and-data-types": {
"title": "JavaScript Variables and Data Types Review",
"intro": [
- "Review the JavaScript Variables and Data Types concepts to prepare for the upcoming quiz."
+ "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."
]
},
"quiz-javascript-variables-and-data-types": {
@@ -2532,7 +2544,8 @@
"review-javascript-strings": {
"title": "JavaScript Strings Review",
"intro": [
- "Review the JavaScript Strings concepts to prepare for the upcoming quiz."
+ "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."
]
},
"quiz-javascript-strings": {
@@ -2633,7 +2646,8 @@
"review-javascript-functions": {
"title": "JavaScript Functions Review",
"intro": [
- "Review the JavaScript Functions concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on JavaScript functions, HTML, you first need to review the concepts.",
+ "Open up this page to review functions, arrow functions and scope."
]
},
"quiz-javascript-functions": {
@@ -2642,9 +2656,11 @@
"Test what you've learned in this quiz on JavaScript Functions."
]
},
- "mexq": {
- "title": "157",
- "intro": []
+ "lecture-working-with-arrays": {
+ "title": "Working with Arrays",
+ "intro": [
+ "In these lecture videos, you will learn about working with JavaScript arrays."
+ ]
},
"workshop-shopping-list": {
"title": "Build a Shopping List",
@@ -2659,9 +2675,11 @@
"In this lab, you will review working with arrays and random numbers by building a lunch picker program."
]
},
- "mokm": {
- "title": "160",
- "intro": []
+ "lecture-working-with-common-array-methods": {
+ "title": "Working with Common Array Methods",
+ "intro": [
+ "In these lecture videos, you will learn about common array methods."
+ ]
},
"review-javascript-arrays": {
"title": "JavaScript Arrays Review",
@@ -2673,9 +2691,11 @@
"title": "JavaScript Arrays Quiz",
"intro": ["Test what you've learned in this quiz on JavaScript Arrays."]
},
- "dvnt": {
- "title": "163",
- "intro": []
+ "lecture-working-with-objects": {
+ "title": "Working with Objects",
+ "intro": [
+ "In these lecture videos, you will learn about working with objects in JavaScript."
+ ]
},
"workshop-recipe-tracker": {
"title": "Build a Recipe Tracker",
@@ -2699,9 +2719,11 @@
"Test what you've learned in this quiz on JavaScript Objects."
]
},
- "kgtw": {
- "title": "168",
- "intro": []
+ "lecture-working-with-loops": {
+ "title": "Working with Loops",
+ "intro": [
+ "In these lecture videos, you will learn about working with loops in JavaScript."
+ ]
},
"workshop-sentence-analyzer": {
"title": "Build a Sentence Analyzer",
@@ -2723,9 +2745,11 @@
"title": "JavaScript Loops Quiz",
"intro": ["Test what you've learned in this quiz on JavaScript Loops."]
},
- "hjtr": {
- "title": "173",
- "intro": []
+ "lecture-understanding-core-javascript-fundamentals": {
+ "title": "Understanding Core JavaScript Fundamentals",
+ "intro": [
+ "In these lecture videos, you will learn more about core JavaScript fundamentals."
+ ]
},
"lab-pyramid-generator": {
"title": "Build a Pyramid Generator",
@@ -2735,9 +2759,11 @@
"title": "Build a Gradebook App",
"intro": ["For this lab, you will create a gradebook app."]
},
- "epfc": {
- "title": "176",
- "intro": []
+ "lecture-the-var-keyword-and-hoisting": {
+ "title": "The var Keyword and Hoisting",
+ "intro": [
+ "In these lecture videos, you will learn about the var keyword and hoisting in JavaScript."
+ ]
},
"lab-inventory-management-program": {
"title": "Build an Inventory Management Program",
@@ -2745,9 +2771,11 @@
"For this lab, you will build an inventory management program using JavaScript."
]
},
- "fbbn": {
- "title": "178",
- "intro": []
+ "lecture-understanding-modules-imports-and-exports": {
+ "title": "Understanding Modules, Imports, and Exports",
+ "intro": [
+ "In these lecture videos, you will learn about modules, imports, and exports in JavaScript."
+ ]
},
"lnmg": {
"title": "179",
@@ -2765,13 +2793,17 @@
"Test what you've learned in this quiz on JavaScript Fundamentals Quiz."
]
},
- "plic": {
- "title": "182",
- "intro": []
+ "lecture-working-with-higher-order-functions-and-callbacks": {
+ "title": "Working with Higher Order Functions and Callbacks",
+ "intro": [
+ "In these lecture videos, you will learn about working with higher order functions and callbacks."
+ ]
},
- "vjmm": {
- "title": "183",
- "intro": []
+ "workshop-library-manager": {
+ "title": "Build a Library Manager",
+ "intro": [
+ "In this workshop, you will learn higher order array methods by building a library manager"
+ ]
},
"bxtv": {
"title": "184",
@@ -2789,14 +2821,22 @@
"Test what you've learned in this quiz on JavaScript Higher Order Functions."
]
},
- "esfh": {
- "title": "187",
- "intro": []
+ "lecture-working-with-the-dom-click-events-and-web-apis": {
+ "title": "Working with the DOM, Click Events, and Web APIs",
+ "intro": [
+ "In these lecture videos, you will learn how to work with the DOM, click events, and web APIs, using Javascript."
+ ]
},
"gibb": {
"title": "188",
"intro": []
},
+ "workshop-storytelling-app": {
+ "title": "Build a Storytelling App",
+ "intro": [
+ "In this workshop, you will build a storytelling app that will allow you to list different stories based on genre."
+ ]
+ },
"lab-favorite-icon-toggler": {
"title": "Build a Favorite Icon Toggler",
"intro": [
@@ -2815,13 +2855,17 @@
"Test what you've learned in this quiz on DOM Manipulation and Click Events with JavaScript Quiz."
]
},
- "ubpx": {
- "title": "192",
- "intro": []
+ "lecture-understanding-the-event-object-and-event-delegation": {
+ "title": "Understanding the Event Object and Event Delegation",
+ "intro": [
+ "In these lecture videos, you will learn about the event object and event delegation."
+ ]
},
- "lbyi": {
- "title": "193",
- "intro": []
+ "workshop-music-instrument-filter": {
+ "title": "Build a Music Instrument Filter",
+ "intro": [
+ "In this workshop, you will build a music instrument filter with JavaScript."
+ ]
},
"lab-real-time-counter": {
"title": "Build a Real Time Counter",
@@ -2887,9 +2931,12 @@
"title": "205",
"intro": []
},
- "dqth": {
- "title": "206",
- "intro": []
+ "workshop-spam-filter": {
+ "title": "Build a Spam Filter",
+ "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."
+ ]
},
"lab-markdown-to-html-converter": {
"title": "Build a Markdown to HTML Converter",
@@ -3037,9 +3084,12 @@
"title": "235",
"intro": []
},
- "peyf": {
- "title": "236",
- "intro": []
+ "workshop-shopping-cart": {
+ "title": "Build a Shopping Cart",
+ "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."
+ ]
},
"lab-project-idea-board": {
"title": "Build a Project Idea Board",
@@ -3105,50 +3155,29 @@
"Test what you've learned in this quiz on JavaScript Functional Programming."
]
},
- "lab-quicksort-algorithm": {
- "title": "Build the Quicksort Algorithm",
- "intro": [
- "For this lab, you will implement the Quicksort algorithm using JavaScript."
- ]
- },
"dtfv": {
"title": "240",
"intro": []
},
- "quiz-searching-and-sorting-algorithms": {
- "title": "Searching and Sorting Algorithms Quiz",
- "intro": [
- "Test what you've learned in this quiz on Searching and Sorting Algorithms."
- ]
- },
"bnvw": {
- "title": "242",
+ "title": "241",
"intro": []
},
+ "workshop-decimal-to-binary-converter": {
+ "title": "Build a Decimal to Binary Converter",
+ "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."
+ ]
+ },
"xkhk": {
"title": "243",
"intro": []
},
- "lab-roman-numeral-converter": {
- "title": "Build a Roman Numeral Converter",
- "intro": [
- "For this lab, you'll build an application that converts integers to Roman numerals."
- ]
- },
"yaxm": {
"title": "245",
"intro": []
},
- "lab-telephone-number-validator": {
- "title": "Build a Telephone Number Validator",
- "intro": [
- "For this lab, you'll build an application that checks if a number is a valid United States phone number."
- ]
- },
- "lab-cash-register": {
- "title": "Build a Cash Register",
- "intro": ["For this lab, you will build a cash register."]
- },
"udia": {
"title": "248",
"intro": []
@@ -3159,12 +3188,6 @@
"Review the JavaScript Functional Programming concepts to prepare for the upcoming quiz."
]
},
- "quiz-javascript-problem-solving-and-algorithmic-thinking": {
- "title": "JavaScript Problem Solving and Algorithmic Thinking Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Problem Solving and Algorithmic Thinking."
- ]
- },
"mjbe": {
"title": "251",
"intro": []
@@ -3206,88 +3229,80 @@
"title": "258",
"intro": []
},
- "mbib": {
- "title": "259",
- "intro": []
+ "lecture-introduction-to-javascript-libraries-and-frameworks": {
+ "title": "Introduction to JavaScript Libraries and Frameworks",
+ "intro": [
+ "In these lecture videos, you will get an introduction to JavaScript libraries and frameworks."
+ ]
},
"oxiv": {
"title": "260",
"intro": []
},
- "quiz-javascript-object-oriented-programming": {
- "title": "JavaScript Object Oriented Programming Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Object Oriented Programming."
- ]
- },
- "nixz": {
- "title": "262",
+ "fjvx": {
+ "title": "261",
"intro": []
},
- "lab-stack-class": {
- "title": "Build a Stack Class",
+ "lecture-working-with-data-in-react": {
+ "title": "Working with Data in React",
"intro": [
- "For this lab, you will build a stack class using JavaScript."
+ "In these lecture videos, you will learn about working with data in React."
]
},
- "lab-linked-list-class": {
- "title": "Build a Linked List Class",
- "intro": [
- "For this lab, you will build a linked list class using JavaScript."
- ]
+ "cdfr": {
+ "title": "263",
+ "intro": []
},
- "lab-hash-table-class": {
- "title": "Build a Hash Table Class",
- "intro": ["For this lab, you will build a hash table using JavaScript."]
+ "bgtd": {
+ "title": "264",
+ "intro": []
},
- "muyw": {
- "title": "266",
+ "ascd": {
+ "title": "265",
"intro": []
},
- "quiz-javascript-data-structures": {
- "title": "JavaScript Data Structures Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Data Structures."
- ]
+ "quiz-react-basics": {
+ "title": "React Basics Quiz",
+ "intro": ["Test what you've learned in this quiz on React Basics."]
+ },
+ "rugw": {
+ "title": "267",
+ "intro": []
},
"rmpy": {
"title": "268",
"intro": []
},
- "lab-depth-first-search": {
- "title": "Implement the Depth-First Search Algorithm",
- "intro": [
- "For this lab, you will use JavaScript to implement the Depth-First Search algorithm."
- ]
+ "dbta": {
+ "title": "269",
+ "intro": []
+ },
+ "rnfe": {
+ "title": "271",
+ "intro": []
},
"xdyh": {
"title": "270",
"intro": []
},
- "quiz-graphs-and-trees": {
- "title": "Graphs and Trees Quiz",
- "intro": ["Test what you've learned in this quiz on Graphs and Trees."]
- },
"vjgg": {
"title": "272",
"intro": []
},
- "lab-nth-fibonacci-number-generator": {
- "title": "Build the nth Fibonacci number generator",
- "intro": [
- "For this lab, you will implement the nth Fibonacci number generator."
- ]
- },
- "kaui": {
- "title": "274",
+ "ceds": {
+ "title": "273",
"intro": []
},
- "quiz-dynamic-programming": {
- "title": "Dynamic Programming Quiz",
+ "quiz-react-state-and-hooks": {
+ "title": "React State and Hooks Quiz",
"intro": [
- "Test what you've learned in this quiz on Dynamic Programming."
+ "Test what you've learned in this quiz on React State and Hooks."
]
},
+ "ftmi": {
+ "title": "275",
+ "intro": []
+ },
"sgau": {
"title": "276",
"intro": []
@@ -3304,53 +3319,65 @@
"title": "279",
"intro": []
},
- "lab-pokemon-search-app": {
- "title": "Build a Pokémon Search App",
- "intro": ["For this project, you will build a Pokémon search app."]
+ "lrof": {
+ "title": "280",
+ "intro": []
},
"vyzp": {
"title": "281",
"intro": []
},
- "icdr": {
- "title": "283",
+ "zagz": {
+ "title": "282",
"intro": []
},
+ "quiz-advanced-react": {
+ "title": "Advanced React Quiz",
+ "intro": ["Test what you've learned in this quiz on Advanced React."]
+ },
"zdsj": {
"title": "284",
"intro": []
},
- "mzae": {
- "title": "285",
- "intro": []
+ "review-web-performance": {
+ "title": "Web Performance Review",
+ "intro": [
+ "Review the Web Performance concepts to prepare for the upcoming quiz."
+ ]
},
- "gjbf": {
- "title": "286",
- "intro": []
+ "quiz-web-performance": {
+ "title": "Web Performance Quiz",
+ "intro": ["Test what you've learned in this quiz on Web Performance."]
},
"mbpv": {
"title": "287",
"intro": []
},
- "eeez": {
- "title": "288",
- "intro": []
+ "review-css-libraries-and-frameworks": {
+ "title": "CSS Libraries and Frameworks Review",
+ "intro": [
+ "Review the CSS Libraries and Frameworks concepts to prepare for the upcoming quiz."
+ ]
},
- "quiz-web-standards": {
- "title": "Web Standards Quiz",
- "intro": ["Test what you've learned in this quiz on Web Standards."]
+ "quiz-css-libraries-and-frameworks": {
+ "title": "CSS Libraries and Frameworks Quiz",
+ "intro": [
+ "Test what you've learned in this quiz on CSS Libraries and Frameworks."
+ ]
},
"khuu": {
"title": "290",
"intro": []
},
- "xdly": {
- "title": "291",
- "intro": []
+ "review-testing": {
+ "title": "Testing Review",
+ "intro": [
+ "Review the Testing concepts to prepare for the upcoming quiz."
+ ]
},
- "rhhl": {
- "title": "292",
- "intro": []
+ "quiz-testing": {
+ "title": "Testing Quiz",
+ "intro": ["Test what you've learned in this quiz on Testing."]
},
"trvf": {
"title": "293",
@@ -3368,104 +3395,8 @@
"title": "296",
"intro": []
},
- "quiz-react-basics": {
- "title": "React Basics Quiz",
- "intro": ["Test what you've learned in this quiz on React Basics."]
- },
- "hfwi": {
- "title": "298",
- "intro": []
- },
- "rnwr": {
- "title": "299",
- "intro": []
- },
- "oeqv": {
- "title": "300",
- "intro": []
- },
- "rdzk": {
- "title": "301",
- "intro": []
- },
- "vtpz": {
- "title": "302",
- "intro": []
- },
- "dfwl": {
- "title": "303",
- "intro": []
- },
- "adzm": {
- "title": "304",
- "intro": []
- },
- "quiz-react-state-and-hooks": {
- "title": "React State and Hooks Quiz",
- "intro": [
- "Test what you've learned in this quiz on React State and Hooks."
- ]
- },
- "voks": {
- "title": "306",
- "intro": []
- },
- "uwum": {
- "title": "307",
- "intro": []
- },
- "ukem": {
- "title": "308",
- "intro": []
- },
- "sdjg": {
- "title": "309",
- "intro": []
- },
- "buzx": {
- "title": "310",
- "intro": []
- },
- "pexz": {
- "title": "311",
- "intro": []
- },
- "prlo": {
- "title": "312",
- "intro": []
- },
- "jsnd": {
- "title": "313",
- "intro": []
- },
- "quiz-advanced-react": {
- "title": "Advanced React Quiz",
- "intro": ["Test what you've learned in this quiz on Advanced React."]
- },
- "tkgg": {
- "title": "315",
- "intro": []
- },
- "review-web-performance": {
- "title": "Web Performance Review",
- "intro": [
- "Review the Web Performance concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-web-performance": {
- "title": "Web Performance Quiz",
- "intro": ["Test what you've learned in this quiz on Web Performance."]
- },
- "hzab": {
- "title": "318",
- "intro": []
- },
- "ggea": {
- "title": "319",
- "intro": []
- },
- "vgvz": {
- "title": "320",
+ "muyw": {
+ "title": "297",
"intro": []
},
"review-typescript": {
@@ -3478,48 +3409,18 @@
"title": "TypeScript Quiz",
"intro": ["Test what you've learned in this quiz on TypeScript."]
},
- "zhhp": {
- "title": "323",
- "intro": []
- },
- "review-css-libraries-and-frameworks": {
- "title": "CSS Libraries and Frameworks Review",
- "intro": [
- "Review the CSS Libraries and Frameworks concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-css-libraries-and-frameworks": {
- "title": "CSS Libraries and Frameworks Quiz",
- "intro": [
- "Test what you've learned in this quiz on CSS Libraries and Frameworks."
- ]
- },
- "gora": {
- "title": "326",
- "intro": []
- },
- "review-testing": {
- "title": "Testing Review",
- "intro": [
- "Review the Testing concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-testing": {
- "title": "Testing Quiz",
- "intro": ["Test what you've learned in this quiz on Testing."]
- },
"review-front-end-libraries": {
"title": "Front End Libraries Review",
"intro": [
"Review the Front End Libraries concepts to prepare for the upcoming quiz."
]
},
- "mfwu": {
- "title": "330",
+ "rdzk": {
+ "title": "301",
"intro": []
},
- "dfcd": {
- "title": "331",
+ "vtpz": {
+ "title": "302",
"intro": []
},
"workshop-bash-boilerplate": {
@@ -3539,8 +3440,8 @@
"title": "Bash Commands Quiz",
"intro": ["Test what you've learned in this quiz on Bash Commands."]
},
- "thsj": {
- "title": "335",
+ "voks": {
+ "title": "306",
"intro": []
},
"workshop-mario-database": {
@@ -3568,8 +3469,8 @@
"Test what you've learned in this quiz on Relational Databases."
]
},
- "ynqt": {
- "title": "340",
+ "pexz": {
+ "title": "311",
"intro": []
},
"workshop-bash-five-programs": {
@@ -3589,8 +3490,8 @@
"title": "Bash Scripting Quiz",
"intro": ["Test what you've learned in this quiz on Bash Scripting."]
},
- "pegc": {
- "title": "344",
+ "tkgg": {
+ "title": "315",
"intro": []
},
"workshop-sql-student-database-part-1": {
@@ -3642,8 +3543,8 @@
"title": "Bash and SQL Quiz",
"intro": ["Test what you've learned in this quiz on Bash and SQL."]
},
- "movb": {
- "title": "353",
+ "eeez": {
+ "title": "324",
"intro": []
},
"workshop-castle": {
@@ -3661,8 +3562,8 @@
"title": "Nano Quiz",
"intro": ["Test what you've learned in this quiz on Nano."]
},
- "pzmc": {
- "title": "357",
+ "rhhl": {
+ "title": "328",
"intro": []
},
"workshop-sql-reference-object": {
@@ -3698,6 +3599,122 @@
"Review the Relational Databases concepts to prepare for the upcoming quiz."
]
},
+ "thsj": {
+ "title": "335",
+ "intro": []
+ },
+ "uwum": {
+ "title": "336",
+ "intro": []
+ },
+ "asfv": {
+ "title": "337",
+ "intro": []
+ },
+ "bvfx": {
+ "title": "338",
+ "intro": []
+ },
+ "buzx": {
+ "title": "339",
+ "intro": []
+ },
+ "ynqt": {
+ "title": "340",
+ "intro": []
+ },
+ "prlo": {
+ "title": "341",
+ "intro": []
+ },
+ "jsnd": {
+ "title": "342",
+ "intro": []
+ },
+ "sxdc": {
+ "title": "343",
+ "intro": []
+ },
+ "pegc": {
+ "title": "344",
+ "intro": []
+ },
+ "mzae": {
+ "title": "345",
+ "intro": []
+ },
+ "gjbf": {
+ "title": "346",
+ "intro": []
+ },
+ "hzab": {
+ "title": "347",
+ "intro": []
+ },
+ "ggea": {
+ "title": "348",
+ "intro": []
+ },
+ "vgvz": {
+ "title": "349",
+ "intro": []
+ },
+ "hfwi": {
+ "title": "350",
+ "intro": []
+ },
+ "rnwr": {
+ "title": "351",
+ "intro": []
+ },
+ "zhhp": {
+ "title": "352",
+ "intro": []
+ },
+ "movb": {
+ "title": "353",
+ "intro": []
+ },
+ "ngor": {
+ "title": "354",
+ "intro": []
+ },
+ "gora": {
+ "title": "355",
+ "intro": []
+ },
+ "xdly": {
+ "title": "356",
+ "intro": []
+ },
+ "pzmc": {
+ "title": "357",
+ "intro": []
+ },
+ "oeqv": {
+ "title": "358",
+ "intro": []
+ },
+ "mfwu": {
+ "title": "359",
+ "intro": []
+ },
+ "dfcd": {
+ "title": "360",
+ "intro": []
+ },
+ "dfwl": {
+ "title": "361",
+ "intro": []
+ },
+ "adzm": {
+ "title": "362",
+ "intro": []
+ },
+ "kaui": {
+ "title": "363",
+ "intro": []
+ },
"zpjj": {
"title": "364",
"intro": []
@@ -3706,17 +3723,13 @@
"title": "365",
"intro": []
},
- "review-security-and-privacy": {
- "title": "Security and Privacy Review",
- "intro": [
- "Review the Security and Privacy concepts to prepare for the upcoming quiz."
- ]
+ "ukem": {
+ "title": "366",
+ "intro": []
},
- "quiz-security-and-privacy": {
- "title": "Security and Privacy Quiz",
- "intro": [
- "Test what you've learned in this quiz on Security and Privacy."
- ]
+ "sdjg": {
+ "title": "367",
+ "intro": []
},
"qjov": {
"title": "368",
@@ -3746,6 +3759,10 @@
"title": "382",
"intro": []
},
+ "xfrd": {
+ "title": "383",
+ "intro": []
+ },
"nkjt": {
"title": "384",
"intro": []
diff --git a/client/i18n/locales/chinese-traditional/translations.json b/client/i18n/locales/chinese-traditional/translations.json
index f29dc092bedd5b..64bde65153c29c 100644
--- a/client/i18n/locales/chinese-traditional/translations.json
+++ b/client/i18n/locales/chinese-traditional/translations.json
@@ -852,7 +852,7 @@
"expired-link": "你點擊的鏈接似乎已過期,請刷新鏈接再登錄",
"signin-success": "成功了!你已經登錄賬戶。",
"social-auth-gone": "鑑於隱私原因,我們已取消社交賬戶授權。我們建議你下次使用你的郵箱地址登錄:{{email}} 。",
- "name-needed": "我們需要將你的名字放在認證上。在你的賬戶設置中添加名字,點擊保存按鈕,然後我們會給你發佈認證。",
+ "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.",
"incomplete-steps": "你似乎未完成必要的步驟。請完成必做項目以申請 {{name}} 認證。",
"already-claimed": "你似乎已申請 {{name}} 認證",
"cert-claim-success": "@{{username}},你已成功申請 {{name}} 認證!代表 freeCodeCamp.org 團隊恭喜你!",
diff --git a/client/i18n/locales/chinese/intro.json b/client/i18n/locales/chinese/intro.json
index 26ddbe812a13da..f149cfb3a1bef3 100644
--- a/client/i18n/locales/chinese/intro.json
+++ b/client/i18n/locales/chinese/intro.json
@@ -1695,9 +1695,11 @@
"By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer."
],
"blocks": {
- "efpl": {
- "title": "0",
- "intro": []
+ "lecture-welcome-to-freecodecamp": {
+ "title": "Welcome to freeCodeCamp",
+ "intro": [
+ "Watch these videos to learn what freeCodeCamp is, and how millions of people have learned to code and gotten developer jobs using it."
+ ]
},
"lecture-what-is-html": {
"title": "What is HTML?",
@@ -2248,7 +2250,8 @@
"review-css-accessibility": {
"title": "CSS Accessibility Review",
"intro": [
- "Review the CSS Accessibility concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on CSS and accessibility, you first need to review.",
+ "Open up this page to review concepts like color contrast tools and accessibility best practices."
]
},
"quiz-css-accessibility": {
@@ -2411,7 +2414,8 @@
"review-css-grid": {
"title": "CSS Grid Review",
"intro": [
- "Review the CSS Grid concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on the fundamentals of CSS Grid, you first need to review.",
+ "Open up this page to review how to work with the different CSS Grid properties like grid-template-columns, grid-gap and more."
]
},
"quiz-css-grid": {
@@ -2424,9 +2428,12 @@
"In these lecture videos, you will learn about animations and accessibility."
]
},
- "dpaq": {
- "title": "120",
- "intro": []
+ "workshop-ferris-wheel": {
+ "title": "Build an Animated Ferris Wheel",
+ "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."
+ ]
},
"lab-moon-orbit": {
"title": "Build a Moon Orbit",
@@ -2450,7 +2457,8 @@
"review-css-animations": {
"title": "CSS Animations Review",
"intro": [
- "Review the CSS Animations concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on working with CSS animations, you first need to review.",
+ "Open up this page to review concepts including prefers-reduced-motion, the @keyframes rule and more."
]
},
"quiz-css-animations": {
@@ -2461,7 +2469,10 @@
},
"review-css": {
"title": "CSS Review",
- "intro": ["Review the CSS concepts to prepare for the upcoming exam."]
+ "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."
+ ]
},
"wvjx": {
"title": "127",
@@ -2501,7 +2512,8 @@
"review-javascript-variables-and-data-types": {
"title": "JavaScript Variables and Data Types Review",
"intro": [
- "Review the JavaScript Variables and Data Types concepts to prepare for the upcoming quiz."
+ "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."
]
},
"quiz-javascript-variables-and-data-types": {
@@ -2532,7 +2544,8 @@
"review-javascript-strings": {
"title": "JavaScript Strings Review",
"intro": [
- "Review the JavaScript Strings concepts to prepare for the upcoming quiz."
+ "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."
]
},
"quiz-javascript-strings": {
@@ -2633,7 +2646,8 @@
"review-javascript-functions": {
"title": "JavaScript Functions Review",
"intro": [
- "Review the JavaScript Functions concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on JavaScript functions, HTML, you first need to review the concepts.",
+ "Open up this page to review functions, arrow functions and scope."
]
},
"quiz-javascript-functions": {
@@ -2642,9 +2656,11 @@
"Test what you've learned in this quiz on JavaScript Functions."
]
},
- "mexq": {
- "title": "157",
- "intro": []
+ "lecture-working-with-arrays": {
+ "title": "Working with Arrays",
+ "intro": [
+ "In these lecture videos, you will learn about working with JavaScript arrays."
+ ]
},
"workshop-shopping-list": {
"title": "Build a Shopping List",
@@ -2659,9 +2675,11 @@
"In this lab, you will review working with arrays and random numbers by building a lunch picker program."
]
},
- "mokm": {
- "title": "160",
- "intro": []
+ "lecture-working-with-common-array-methods": {
+ "title": "Working with Common Array Methods",
+ "intro": [
+ "In these lecture videos, you will learn about common array methods."
+ ]
},
"review-javascript-arrays": {
"title": "JavaScript Arrays Review",
@@ -2673,9 +2691,11 @@
"title": "JavaScript Arrays Quiz",
"intro": ["Test what you've learned in this quiz on JavaScript Arrays."]
},
- "dvnt": {
- "title": "163",
- "intro": []
+ "lecture-working-with-objects": {
+ "title": "Working with Objects",
+ "intro": [
+ "In these lecture videos, you will learn about working with objects in JavaScript."
+ ]
},
"workshop-recipe-tracker": {
"title": "Build a Recipe Tracker",
@@ -2699,9 +2719,11 @@
"Test what you've learned in this quiz on JavaScript Objects."
]
},
- "kgtw": {
- "title": "168",
- "intro": []
+ "lecture-working-with-loops": {
+ "title": "Working with Loops",
+ "intro": [
+ "In these lecture videos, you will learn about working with loops in JavaScript."
+ ]
},
"workshop-sentence-analyzer": {
"title": "Build a Sentence Analyzer",
@@ -2723,9 +2745,11 @@
"title": "JavaScript Loops Quiz",
"intro": ["Test what you've learned in this quiz on JavaScript Loops."]
},
- "hjtr": {
- "title": "173",
- "intro": []
+ "lecture-understanding-core-javascript-fundamentals": {
+ "title": "Understanding Core JavaScript Fundamentals",
+ "intro": [
+ "In these lecture videos, you will learn more about core JavaScript fundamentals."
+ ]
},
"lab-pyramid-generator": {
"title": "Build a Pyramid Generator",
@@ -2735,9 +2759,11 @@
"title": "Build a Gradebook App",
"intro": ["For this lab, you will create a gradebook app."]
},
- "epfc": {
- "title": "176",
- "intro": []
+ "lecture-the-var-keyword-and-hoisting": {
+ "title": "The var Keyword and Hoisting",
+ "intro": [
+ "In these lecture videos, you will learn about the var keyword and hoisting in JavaScript."
+ ]
},
"lab-inventory-management-program": {
"title": "Build an Inventory Management Program",
@@ -2745,9 +2771,11 @@
"For this lab, you will build an inventory management program using JavaScript."
]
},
- "fbbn": {
- "title": "178",
- "intro": []
+ "lecture-understanding-modules-imports-and-exports": {
+ "title": "Understanding Modules, Imports, and Exports",
+ "intro": [
+ "In these lecture videos, you will learn about modules, imports, and exports in JavaScript."
+ ]
},
"lnmg": {
"title": "179",
@@ -2765,13 +2793,17 @@
"Test what you've learned in this quiz on JavaScript Fundamentals Quiz."
]
},
- "plic": {
- "title": "182",
- "intro": []
+ "lecture-working-with-higher-order-functions-and-callbacks": {
+ "title": "Working with Higher Order Functions and Callbacks",
+ "intro": [
+ "In these lecture videos, you will learn about working with higher order functions and callbacks."
+ ]
},
- "vjmm": {
- "title": "183",
- "intro": []
+ "workshop-library-manager": {
+ "title": "Build a Library Manager",
+ "intro": [
+ "In this workshop, you will learn higher order array methods by building a library manager"
+ ]
},
"bxtv": {
"title": "184",
@@ -2789,14 +2821,22 @@
"Test what you've learned in this quiz on JavaScript Higher Order Functions."
]
},
- "esfh": {
- "title": "187",
- "intro": []
+ "lecture-working-with-the-dom-click-events-and-web-apis": {
+ "title": "Working with the DOM, Click Events, and Web APIs",
+ "intro": [
+ "In these lecture videos, you will learn how to work with the DOM, click events, and web APIs, using Javascript."
+ ]
},
"gibb": {
"title": "188",
"intro": []
},
+ "workshop-storytelling-app": {
+ "title": "Build a Storytelling App",
+ "intro": [
+ "In this workshop, you will build a storytelling app that will allow you to list different stories based on genre."
+ ]
+ },
"lab-favorite-icon-toggler": {
"title": "Build a Favorite Icon Toggler",
"intro": [
@@ -2815,13 +2855,17 @@
"Test what you've learned in this quiz on DOM Manipulation and Click Events with JavaScript Quiz."
]
},
- "ubpx": {
- "title": "192",
- "intro": []
+ "lecture-understanding-the-event-object-and-event-delegation": {
+ "title": "Understanding the Event Object and Event Delegation",
+ "intro": [
+ "In these lecture videos, you will learn about the event object and event delegation."
+ ]
},
- "lbyi": {
- "title": "193",
- "intro": []
+ "workshop-music-instrument-filter": {
+ "title": "Build a Music Instrument Filter",
+ "intro": [
+ "In this workshop, you will build a music instrument filter with JavaScript."
+ ]
},
"lab-real-time-counter": {
"title": "Build a Real Time Counter",
@@ -2887,9 +2931,12 @@
"title": "205",
"intro": []
},
- "dqth": {
- "title": "206",
- "intro": []
+ "workshop-spam-filter": {
+ "title": "Build a Spam Filter",
+ "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."
+ ]
},
"lab-markdown-to-html-converter": {
"title": "Build a Markdown to HTML Converter",
@@ -3037,9 +3084,12 @@
"title": "235",
"intro": []
},
- "peyf": {
- "title": "236",
- "intro": []
+ "workshop-shopping-cart": {
+ "title": "Build a Shopping Cart",
+ "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."
+ ]
},
"lab-project-idea-board": {
"title": "Build a Project Idea Board",
@@ -3105,50 +3155,29 @@
"Test what you've learned in this quiz on JavaScript Functional Programming."
]
},
- "lab-quicksort-algorithm": {
- "title": "Build the Quicksort Algorithm",
- "intro": [
- "For this lab, you will implement the Quicksort algorithm using JavaScript."
- ]
- },
"dtfv": {
"title": "240",
"intro": []
},
- "quiz-searching-and-sorting-algorithms": {
- "title": "Searching and Sorting Algorithms Quiz",
- "intro": [
- "Test what you've learned in this quiz on Searching and Sorting Algorithms."
- ]
- },
"bnvw": {
- "title": "242",
+ "title": "241",
"intro": []
},
+ "workshop-decimal-to-binary-converter": {
+ "title": "Build a Decimal to Binary Converter",
+ "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."
+ ]
+ },
"xkhk": {
"title": "243",
"intro": []
},
- "lab-roman-numeral-converter": {
- "title": "Build a Roman Numeral Converter",
- "intro": [
- "For this lab, you'll build an application that converts integers to Roman numerals."
- ]
- },
"yaxm": {
"title": "245",
"intro": []
},
- "lab-telephone-number-validator": {
- "title": "Build a Telephone Number Validator",
- "intro": [
- "For this lab, you'll build an application that checks if a number is a valid United States phone number."
- ]
- },
- "lab-cash-register": {
- "title": "Build a Cash Register",
- "intro": ["For this lab, you will build a cash register."]
- },
"udia": {
"title": "248",
"intro": []
@@ -3159,12 +3188,6 @@
"Review the JavaScript Functional Programming concepts to prepare for the upcoming quiz."
]
},
- "quiz-javascript-problem-solving-and-algorithmic-thinking": {
- "title": "JavaScript Problem Solving and Algorithmic Thinking Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Problem Solving and Algorithmic Thinking."
- ]
- },
"mjbe": {
"title": "251",
"intro": []
@@ -3206,88 +3229,80 @@
"title": "258",
"intro": []
},
- "mbib": {
- "title": "259",
- "intro": []
+ "lecture-introduction-to-javascript-libraries-and-frameworks": {
+ "title": "Introduction to JavaScript Libraries and Frameworks",
+ "intro": [
+ "In these lecture videos, you will get an introduction to JavaScript libraries and frameworks."
+ ]
},
"oxiv": {
"title": "260",
"intro": []
},
- "quiz-javascript-object-oriented-programming": {
- "title": "JavaScript Object Oriented Programming Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Object Oriented Programming."
- ]
- },
- "nixz": {
- "title": "262",
+ "fjvx": {
+ "title": "261",
"intro": []
},
- "lab-stack-class": {
- "title": "Build a Stack Class",
+ "lecture-working-with-data-in-react": {
+ "title": "Working with Data in React",
"intro": [
- "For this lab, you will build a stack class using JavaScript."
+ "In these lecture videos, you will learn about working with data in React."
]
},
- "lab-linked-list-class": {
- "title": "Build a Linked List Class",
- "intro": [
- "For this lab, you will build a linked list class using JavaScript."
- ]
+ "cdfr": {
+ "title": "263",
+ "intro": []
},
- "lab-hash-table-class": {
- "title": "Build a Hash Table Class",
- "intro": ["For this lab, you will build a hash table using JavaScript."]
+ "bgtd": {
+ "title": "264",
+ "intro": []
},
- "muyw": {
- "title": "266",
+ "ascd": {
+ "title": "265",
"intro": []
},
- "quiz-javascript-data-structures": {
- "title": "JavaScript Data Structures Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Data Structures."
- ]
+ "quiz-react-basics": {
+ "title": "React Basics Quiz",
+ "intro": ["Test what you've learned in this quiz on React Basics."]
+ },
+ "rugw": {
+ "title": "267",
+ "intro": []
},
"rmpy": {
"title": "268",
"intro": []
},
- "lab-depth-first-search": {
- "title": "Implement the Depth-First Search Algorithm",
- "intro": [
- "For this lab, you will use JavaScript to implement the Depth-First Search algorithm."
- ]
+ "dbta": {
+ "title": "269",
+ "intro": []
+ },
+ "rnfe": {
+ "title": "271",
+ "intro": []
},
"xdyh": {
"title": "270",
"intro": []
},
- "quiz-graphs-and-trees": {
- "title": "Graphs and Trees Quiz",
- "intro": ["Test what you've learned in this quiz on Graphs and Trees."]
- },
"vjgg": {
"title": "272",
"intro": []
},
- "lab-nth-fibonacci-number-generator": {
- "title": "Build the nth Fibonacci number generator",
- "intro": [
- "For this lab, you will implement the nth Fibonacci number generator."
- ]
- },
- "kaui": {
- "title": "274",
+ "ceds": {
+ "title": "273",
"intro": []
},
- "quiz-dynamic-programming": {
- "title": "Dynamic Programming Quiz",
+ "quiz-react-state-and-hooks": {
+ "title": "React State and Hooks Quiz",
"intro": [
- "Test what you've learned in this quiz on Dynamic Programming."
+ "Test what you've learned in this quiz on React State and Hooks."
]
},
+ "ftmi": {
+ "title": "275",
+ "intro": []
+ },
"sgau": {
"title": "276",
"intro": []
@@ -3304,53 +3319,65 @@
"title": "279",
"intro": []
},
- "lab-pokemon-search-app": {
- "title": "Build a Pokémon Search App",
- "intro": ["For this project, you will build a Pokémon search app."]
+ "lrof": {
+ "title": "280",
+ "intro": []
},
"vyzp": {
"title": "281",
"intro": []
},
- "icdr": {
- "title": "283",
+ "zagz": {
+ "title": "282",
"intro": []
},
+ "quiz-advanced-react": {
+ "title": "Advanced React Quiz",
+ "intro": ["Test what you've learned in this quiz on Advanced React."]
+ },
"zdsj": {
"title": "284",
"intro": []
},
- "mzae": {
- "title": "285",
- "intro": []
+ "review-web-performance": {
+ "title": "Web Performance Review",
+ "intro": [
+ "Review the Web Performance concepts to prepare for the upcoming quiz."
+ ]
},
- "gjbf": {
- "title": "286",
- "intro": []
+ "quiz-web-performance": {
+ "title": "Web Performance Quiz",
+ "intro": ["Test what you've learned in this quiz on Web Performance."]
},
"mbpv": {
"title": "287",
"intro": []
},
- "eeez": {
- "title": "288",
- "intro": []
+ "review-css-libraries-and-frameworks": {
+ "title": "CSS Libraries and Frameworks Review",
+ "intro": [
+ "Review the CSS Libraries and Frameworks concepts to prepare for the upcoming quiz."
+ ]
},
- "quiz-web-standards": {
- "title": "Web Standards Quiz",
- "intro": ["Test what you've learned in this quiz on Web Standards."]
+ "quiz-css-libraries-and-frameworks": {
+ "title": "CSS Libraries and Frameworks Quiz",
+ "intro": [
+ "Test what you've learned in this quiz on CSS Libraries and Frameworks."
+ ]
},
"khuu": {
"title": "290",
"intro": []
},
- "xdly": {
- "title": "291",
- "intro": []
+ "review-testing": {
+ "title": "Testing Review",
+ "intro": [
+ "Review the Testing concepts to prepare for the upcoming quiz."
+ ]
},
- "rhhl": {
- "title": "292",
- "intro": []
+ "quiz-testing": {
+ "title": "Testing Quiz",
+ "intro": ["Test what you've learned in this quiz on Testing."]
},
"trvf": {
"title": "293",
@@ -3368,104 +3395,8 @@
"title": "296",
"intro": []
},
- "quiz-react-basics": {
- "title": "React Basics Quiz",
- "intro": ["Test what you've learned in this quiz on React Basics."]
- },
- "hfwi": {
- "title": "298",
- "intro": []
- },
- "rnwr": {
- "title": "299",
- "intro": []
- },
- "oeqv": {
- "title": "300",
- "intro": []
- },
- "rdzk": {
- "title": "301",
- "intro": []
- },
- "vtpz": {
- "title": "302",
- "intro": []
- },
- "dfwl": {
- "title": "303",
- "intro": []
- },
- "adzm": {
- "title": "304",
- "intro": []
- },
- "quiz-react-state-and-hooks": {
- "title": "React State and Hooks Quiz",
- "intro": [
- "Test what you've learned in this quiz on React State and Hooks."
- ]
- },
- "voks": {
- "title": "306",
- "intro": []
- },
- "uwum": {
- "title": "307",
- "intro": []
- },
- "ukem": {
- "title": "308",
- "intro": []
- },
- "sdjg": {
- "title": "309",
- "intro": []
- },
- "buzx": {
- "title": "310",
- "intro": []
- },
- "pexz": {
- "title": "311",
- "intro": []
- },
- "prlo": {
- "title": "312",
- "intro": []
- },
- "jsnd": {
- "title": "313",
- "intro": []
- },
- "quiz-advanced-react": {
- "title": "Advanced React Quiz",
- "intro": ["Test what you've learned in this quiz on Advanced React."]
- },
- "tkgg": {
- "title": "315",
- "intro": []
- },
- "review-web-performance": {
- "title": "Web Performance Review",
- "intro": [
- "Review the Web Performance concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-web-performance": {
- "title": "Web Performance Quiz",
- "intro": ["Test what you've learned in this quiz on Web Performance."]
- },
- "hzab": {
- "title": "318",
- "intro": []
- },
- "ggea": {
- "title": "319",
- "intro": []
- },
- "vgvz": {
- "title": "320",
+ "muyw": {
+ "title": "297",
"intro": []
},
"review-typescript": {
@@ -3478,48 +3409,18 @@
"title": "TypeScript Quiz",
"intro": ["Test what you've learned in this quiz on TypeScript."]
},
- "zhhp": {
- "title": "323",
- "intro": []
- },
- "review-css-libraries-and-frameworks": {
- "title": "CSS Libraries and Frameworks Review",
- "intro": [
- "Review the CSS Libraries and Frameworks concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-css-libraries-and-frameworks": {
- "title": "CSS Libraries and Frameworks Quiz",
- "intro": [
- "Test what you've learned in this quiz on CSS Libraries and Frameworks."
- ]
- },
- "gora": {
- "title": "326",
- "intro": []
- },
- "review-testing": {
- "title": "Testing Review",
- "intro": [
- "Review the Testing concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-testing": {
- "title": "Testing Quiz",
- "intro": ["Test what you've learned in this quiz on Testing."]
- },
"review-front-end-libraries": {
"title": "Front End Libraries Review",
"intro": [
"Review the Front End Libraries concepts to prepare for the upcoming quiz."
]
},
- "mfwu": {
- "title": "330",
+ "rdzk": {
+ "title": "301",
"intro": []
},
- "dfcd": {
- "title": "331",
+ "vtpz": {
+ "title": "302",
"intro": []
},
"workshop-bash-boilerplate": {
@@ -3539,8 +3440,8 @@
"title": "Bash Commands Quiz",
"intro": ["Test what you've learned in this quiz on Bash Commands."]
},
- "thsj": {
- "title": "335",
+ "voks": {
+ "title": "306",
"intro": []
},
"workshop-mario-database": {
@@ -3568,8 +3469,8 @@
"Test what you've learned in this quiz on Relational Databases."
]
},
- "ynqt": {
- "title": "340",
+ "pexz": {
+ "title": "311",
"intro": []
},
"workshop-bash-five-programs": {
@@ -3589,8 +3490,8 @@
"title": "Bash Scripting Quiz",
"intro": ["Test what you've learned in this quiz on Bash Scripting."]
},
- "pegc": {
- "title": "344",
+ "tkgg": {
+ "title": "315",
"intro": []
},
"workshop-sql-student-database-part-1": {
@@ -3642,8 +3543,8 @@
"title": "Bash and SQL Quiz",
"intro": ["Test what you've learned in this quiz on Bash and SQL."]
},
- "movb": {
- "title": "353",
+ "eeez": {
+ "title": "324",
"intro": []
},
"workshop-castle": {
@@ -3661,8 +3562,8 @@
"title": "Nano Quiz",
"intro": ["Test what you've learned in this quiz on Nano."]
},
- "pzmc": {
- "title": "357",
+ "rhhl": {
+ "title": "328",
"intro": []
},
"workshop-sql-reference-object": {
@@ -3698,6 +3599,122 @@
"Review the Relational Databases concepts to prepare for the upcoming quiz."
]
},
+ "thsj": {
+ "title": "335",
+ "intro": []
+ },
+ "uwum": {
+ "title": "336",
+ "intro": []
+ },
+ "asfv": {
+ "title": "337",
+ "intro": []
+ },
+ "bvfx": {
+ "title": "338",
+ "intro": []
+ },
+ "buzx": {
+ "title": "339",
+ "intro": []
+ },
+ "ynqt": {
+ "title": "340",
+ "intro": []
+ },
+ "prlo": {
+ "title": "341",
+ "intro": []
+ },
+ "jsnd": {
+ "title": "342",
+ "intro": []
+ },
+ "sxdc": {
+ "title": "343",
+ "intro": []
+ },
+ "pegc": {
+ "title": "344",
+ "intro": []
+ },
+ "mzae": {
+ "title": "345",
+ "intro": []
+ },
+ "gjbf": {
+ "title": "346",
+ "intro": []
+ },
+ "hzab": {
+ "title": "347",
+ "intro": []
+ },
+ "ggea": {
+ "title": "348",
+ "intro": []
+ },
+ "vgvz": {
+ "title": "349",
+ "intro": []
+ },
+ "hfwi": {
+ "title": "350",
+ "intro": []
+ },
+ "rnwr": {
+ "title": "351",
+ "intro": []
+ },
+ "zhhp": {
+ "title": "352",
+ "intro": []
+ },
+ "movb": {
+ "title": "353",
+ "intro": []
+ },
+ "ngor": {
+ "title": "354",
+ "intro": []
+ },
+ "gora": {
+ "title": "355",
+ "intro": []
+ },
+ "xdly": {
+ "title": "356",
+ "intro": []
+ },
+ "pzmc": {
+ "title": "357",
+ "intro": []
+ },
+ "oeqv": {
+ "title": "358",
+ "intro": []
+ },
+ "mfwu": {
+ "title": "359",
+ "intro": []
+ },
+ "dfcd": {
+ "title": "360",
+ "intro": []
+ },
+ "dfwl": {
+ "title": "361",
+ "intro": []
+ },
+ "adzm": {
+ "title": "362",
+ "intro": []
+ },
+ "kaui": {
+ "title": "363",
+ "intro": []
+ },
"zpjj": {
"title": "364",
"intro": []
@@ -3706,17 +3723,13 @@
"title": "365",
"intro": []
},
- "review-security-and-privacy": {
- "title": "Security and Privacy Review",
- "intro": [
- "Review the Security and Privacy concepts to prepare for the upcoming quiz."
- ]
+ "ukem": {
+ "title": "366",
+ "intro": []
},
- "quiz-security-and-privacy": {
- "title": "Security and Privacy Quiz",
- "intro": [
- "Test what you've learned in this quiz on Security and Privacy."
- ]
+ "sdjg": {
+ "title": "367",
+ "intro": []
},
"qjov": {
"title": "368",
@@ -3746,6 +3759,10 @@
"title": "382",
"intro": []
},
+ "xfrd": {
+ "title": "383",
+ "intro": []
+ },
"nkjt": {
"title": "384",
"intro": []
diff --git a/client/i18n/locales/chinese/translations.json b/client/i18n/locales/chinese/translations.json
index 5b34c17aaeed59..255632d59de3fc 100644
--- a/client/i18n/locales/chinese/translations.json
+++ b/client/i18n/locales/chinese/translations.json
@@ -852,7 +852,7 @@
"expired-link": "你点击的链接似乎已过期,请刷新链接再登录",
"signin-success": "成功了!你已经登录账户。",
"social-auth-gone": "鉴于隐私原因,我们已取消社交账户授权。我们建议你下次使用你的邮箱地址登录:{{email}} 。",
- "name-needed": "我们需要将你的名字放在认证上。在你的账户设置中添加名字,点击保存按钮,然后我们会给你发布认证。",
+ "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.",
"incomplete-steps": "你似乎未完成必要的步骤。请完成必做项目以申请 {{name}} 认证。",
"already-claimed": "你似乎已申请 {{name}} 认证",
"cert-claim-success": "@{{username}},你已成功申请 {{name}} 认证!代表 freeCodeCamp.org 团队恭喜你!",
diff --git a/client/i18n/locales/espanol/intro.json b/client/i18n/locales/espanol/intro.json
index 6bfdf0611d1917..2c848b10bcd6f5 100644
--- a/client/i18n/locales/espanol/intro.json
+++ b/client/i18n/locales/espanol/intro.json
@@ -1711,9 +1711,11 @@
"By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer."
],
"blocks": {
- "efpl": {
- "title": "0",
- "intro": []
+ "lecture-welcome-to-freecodecamp": {
+ "title": "Welcome to freeCodeCamp",
+ "intro": [
+ "Watch these videos to learn what freeCodeCamp is, and how millions of people have learned to code and gotten developer jobs using it."
+ ]
},
"lecture-what-is-html": {
"title": "What is HTML?",
@@ -2264,7 +2266,8 @@
"review-css-accessibility": {
"title": "CSS Accessibility Review",
"intro": [
- "Review the CSS Accessibility concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on CSS and accessibility, you first need to review.",
+ "Open up this page to review concepts like color contrast tools and accessibility best practices."
]
},
"quiz-css-accessibility": {
@@ -2427,7 +2430,8 @@
"review-css-grid": {
"title": "CSS Grid Review",
"intro": [
- "Review the CSS Grid concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on the fundamentals of CSS Grid, you first need to review.",
+ "Open up this page to review how to work with the different CSS Grid properties like grid-template-columns, grid-gap and more."
]
},
"quiz-css-grid": {
@@ -2440,9 +2444,12 @@
"In these lecture videos, you will learn about animations and accessibility."
]
},
- "dpaq": {
- "title": "120",
- "intro": []
+ "workshop-ferris-wheel": {
+ "title": "Build an Animated Ferris Wheel",
+ "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."
+ ]
},
"lab-moon-orbit": {
"title": "Build a Moon Orbit",
@@ -2466,7 +2473,8 @@
"review-css-animations": {
"title": "CSS Animations Review",
"intro": [
- "Review the CSS Animations concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on working with CSS animations, you first need to review.",
+ "Open up this page to review concepts including prefers-reduced-motion, the @keyframes rule and more."
]
},
"quiz-css-animations": {
@@ -2477,7 +2485,10 @@
},
"review-css": {
"title": "CSS Review",
- "intro": ["Review the CSS concepts to prepare for the upcoming exam."]
+ "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."
+ ]
},
"wvjx": {
"title": "127",
@@ -2517,7 +2528,8 @@
"review-javascript-variables-and-data-types": {
"title": "JavaScript Variables and Data Types Review",
"intro": [
- "Review the JavaScript Variables and Data Types concepts to prepare for the upcoming quiz."
+ "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."
]
},
"quiz-javascript-variables-and-data-types": {
@@ -2548,7 +2560,8 @@
"review-javascript-strings": {
"title": "JavaScript Strings Review",
"intro": [
- "Review the JavaScript Strings concepts to prepare for the upcoming quiz."
+ "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."
]
},
"quiz-javascript-strings": {
@@ -2649,7 +2662,8 @@
"review-javascript-functions": {
"title": "JavaScript Functions Review",
"intro": [
- "Review the JavaScript Functions concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on JavaScript functions, HTML, you first need to review the concepts.",
+ "Open up this page to review functions, arrow functions and scope."
]
},
"quiz-javascript-functions": {
@@ -2658,9 +2672,11 @@
"Test what you've learned in this quiz on JavaScript Functions."
]
},
- "mexq": {
- "title": "157",
- "intro": []
+ "lecture-working-with-arrays": {
+ "title": "Working with Arrays",
+ "intro": [
+ "In these lecture videos, you will learn about working with JavaScript arrays."
+ ]
},
"workshop-shopping-list": {
"title": "Build a Shopping List",
@@ -2675,9 +2691,11 @@
"In this lab, you will review working with arrays and random numbers by building a lunch picker program."
]
},
- "mokm": {
- "title": "160",
- "intro": []
+ "lecture-working-with-common-array-methods": {
+ "title": "Working with Common Array Methods",
+ "intro": [
+ "In these lecture videos, you will learn about common array methods."
+ ]
},
"review-javascript-arrays": {
"title": "JavaScript Arrays Review",
@@ -2689,9 +2707,11 @@
"title": "JavaScript Arrays Quiz",
"intro": ["Test what you've learned in this quiz on JavaScript Arrays."]
},
- "dvnt": {
- "title": "163",
- "intro": []
+ "lecture-working-with-objects": {
+ "title": "Working with Objects",
+ "intro": [
+ "In these lecture videos, you will learn about working with objects in JavaScript."
+ ]
},
"workshop-recipe-tracker": {
"title": "Build a Recipe Tracker",
@@ -2715,9 +2735,11 @@
"Test what you've learned in this quiz on JavaScript Objects."
]
},
- "kgtw": {
- "title": "168",
- "intro": []
+ "lecture-working-with-loops": {
+ "title": "Working with Loops",
+ "intro": [
+ "In these lecture videos, you will learn about working with loops in JavaScript."
+ ]
},
"workshop-sentence-analyzer": {
"title": "Build a Sentence Analyzer",
@@ -2739,9 +2761,11 @@
"title": "JavaScript Loops Quiz",
"intro": ["Test what you've learned in this quiz on JavaScript Loops."]
},
- "hjtr": {
- "title": "173",
- "intro": []
+ "lecture-understanding-core-javascript-fundamentals": {
+ "title": "Understanding Core JavaScript Fundamentals",
+ "intro": [
+ "In these lecture videos, you will learn more about core JavaScript fundamentals."
+ ]
},
"lab-pyramid-generator": {
"title": "Build a Pyramid Generator",
@@ -2751,9 +2775,11 @@
"title": "Build a Gradebook App",
"intro": ["For this lab, you will create a gradebook app."]
},
- "epfc": {
- "title": "176",
- "intro": []
+ "lecture-the-var-keyword-and-hoisting": {
+ "title": "The var Keyword and Hoisting",
+ "intro": [
+ "In these lecture videos, you will learn about the var keyword and hoisting in JavaScript."
+ ]
},
"lab-inventory-management-program": {
"title": "Build an Inventory Management Program",
@@ -2761,9 +2787,11 @@
"For this lab, you will build an inventory management program using JavaScript."
]
},
- "fbbn": {
- "title": "178",
- "intro": []
+ "lecture-understanding-modules-imports-and-exports": {
+ "title": "Understanding Modules, Imports, and Exports",
+ "intro": [
+ "In these lecture videos, you will learn about modules, imports, and exports in JavaScript."
+ ]
},
"lnmg": {
"title": "179",
@@ -2781,13 +2809,17 @@
"Test what you've learned in this quiz on JavaScript Fundamentals Quiz."
]
},
- "plic": {
- "title": "182",
- "intro": []
+ "lecture-working-with-higher-order-functions-and-callbacks": {
+ "title": "Working with Higher Order Functions and Callbacks",
+ "intro": [
+ "In these lecture videos, you will learn about working with higher order functions and callbacks."
+ ]
},
- "vjmm": {
- "title": "183",
- "intro": []
+ "workshop-library-manager": {
+ "title": "Build a Library Manager",
+ "intro": [
+ "In this workshop, you will learn higher order array methods by building a library manager"
+ ]
},
"bxtv": {
"title": "184",
@@ -2805,14 +2837,22 @@
"Test what you've learned in this quiz on JavaScript Higher Order Functions."
]
},
- "esfh": {
- "title": "187",
- "intro": []
+ "lecture-working-with-the-dom-click-events-and-web-apis": {
+ "title": "Working with the DOM, Click Events, and Web APIs",
+ "intro": [
+ "In these lecture videos, you will learn how to work with the DOM, click events, and web APIs, using Javascript."
+ ]
},
"gibb": {
"title": "188",
"intro": []
},
+ "workshop-storytelling-app": {
+ "title": "Build a Storytelling App",
+ "intro": [
+ "In this workshop, you will build a storytelling app that will allow you to list different stories based on genre."
+ ]
+ },
"lab-favorite-icon-toggler": {
"title": "Build a Favorite Icon Toggler",
"intro": [
@@ -2831,13 +2871,17 @@
"Test what you've learned in this quiz on DOM Manipulation and Click Events with JavaScript Quiz."
]
},
- "ubpx": {
- "title": "192",
- "intro": []
+ "lecture-understanding-the-event-object-and-event-delegation": {
+ "title": "Understanding the Event Object and Event Delegation",
+ "intro": [
+ "In these lecture videos, you will learn about the event object and event delegation."
+ ]
},
- "lbyi": {
- "title": "193",
- "intro": []
+ "workshop-music-instrument-filter": {
+ "title": "Build a Music Instrument Filter",
+ "intro": [
+ "In this workshop, you will build a music instrument filter with JavaScript."
+ ]
},
"lab-real-time-counter": {
"title": "Build a Real Time Counter",
@@ -2903,9 +2947,12 @@
"title": "205",
"intro": []
},
- "dqth": {
- "title": "206",
- "intro": []
+ "workshop-spam-filter": {
+ "title": "Build a Spam Filter",
+ "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."
+ ]
},
"lab-markdown-to-html-converter": {
"title": "Build a Markdown to HTML Converter",
@@ -3053,9 +3100,12 @@
"title": "235",
"intro": []
},
- "peyf": {
- "title": "236",
- "intro": []
+ "workshop-shopping-cart": {
+ "title": "Build a Shopping Cart",
+ "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."
+ ]
},
"lab-project-idea-board": {
"title": "Build a Project Idea Board",
@@ -3121,50 +3171,29 @@
"Test what you've learned in this quiz on JavaScript Functional Programming."
]
},
- "lab-quicksort-algorithm": {
- "title": "Build the Quicksort Algorithm",
- "intro": [
- "For this lab, you will implement the Quicksort algorithm using JavaScript."
- ]
- },
"dtfv": {
"title": "240",
"intro": []
},
- "quiz-searching-and-sorting-algorithms": {
- "title": "Searching and Sorting Algorithms Quiz",
- "intro": [
- "Test what you've learned in this quiz on Searching and Sorting Algorithms."
- ]
- },
"bnvw": {
- "title": "242",
+ "title": "241",
"intro": []
},
+ "workshop-decimal-to-binary-converter": {
+ "title": "Build a Decimal to Binary Converter",
+ "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."
+ ]
+ },
"xkhk": {
"title": "243",
"intro": []
},
- "lab-roman-numeral-converter": {
- "title": "Build a Roman Numeral Converter",
- "intro": [
- "For this lab, you'll build an application that converts integers to Roman numerals."
- ]
- },
"yaxm": {
"title": "245",
"intro": []
},
- "lab-telephone-number-validator": {
- "title": "Build a Telephone Number Validator",
- "intro": [
- "For this lab, you'll build an application that checks if a number is a valid United States phone number."
- ]
- },
- "lab-cash-register": {
- "title": "Build a Cash Register",
- "intro": ["For this lab, you will build a cash register."]
- },
"udia": {
"title": "248",
"intro": []
@@ -3175,12 +3204,6 @@
"Review the JavaScript Functional Programming concepts to prepare for the upcoming quiz."
]
},
- "quiz-javascript-problem-solving-and-algorithmic-thinking": {
- "title": "JavaScript Problem Solving and Algorithmic Thinking Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Problem Solving and Algorithmic Thinking."
- ]
- },
"mjbe": {
"title": "251",
"intro": []
@@ -3222,88 +3245,80 @@
"title": "258",
"intro": []
},
- "mbib": {
- "title": "259",
- "intro": []
+ "lecture-introduction-to-javascript-libraries-and-frameworks": {
+ "title": "Introduction to JavaScript Libraries and Frameworks",
+ "intro": [
+ "In these lecture videos, you will get an introduction to JavaScript libraries and frameworks."
+ ]
},
"oxiv": {
"title": "260",
"intro": []
},
- "quiz-javascript-object-oriented-programming": {
- "title": "JavaScript Object Oriented Programming Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Object Oriented Programming."
- ]
- },
- "nixz": {
- "title": "262",
+ "fjvx": {
+ "title": "261",
"intro": []
},
- "lab-stack-class": {
- "title": "Build a Stack Class",
+ "lecture-working-with-data-in-react": {
+ "title": "Working with Data in React",
"intro": [
- "For this lab, you will build a stack class using JavaScript."
+ "In these lecture videos, you will learn about working with data in React."
]
},
- "lab-linked-list-class": {
- "title": "Build a Linked List Class",
- "intro": [
- "For this lab, you will build a linked list class using JavaScript."
- ]
+ "cdfr": {
+ "title": "263",
+ "intro": []
},
- "lab-hash-table-class": {
- "title": "Build a Hash Table Class",
- "intro": ["For this lab, you will build a hash table using JavaScript."]
+ "bgtd": {
+ "title": "264",
+ "intro": []
},
- "muyw": {
- "title": "266",
+ "ascd": {
+ "title": "265",
"intro": []
},
- "quiz-javascript-data-structures": {
- "title": "JavaScript Data Structures Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Data Structures."
- ]
+ "quiz-react-basics": {
+ "title": "React Basics Quiz",
+ "intro": ["Test what you've learned in this quiz on React Basics."]
+ },
+ "rugw": {
+ "title": "267",
+ "intro": []
},
"rmpy": {
"title": "268",
"intro": []
},
- "lab-depth-first-search": {
- "title": "Implement the Depth-First Search Algorithm",
- "intro": [
- "For this lab, you will use JavaScript to implement the Depth-First Search algorithm."
- ]
+ "dbta": {
+ "title": "269",
+ "intro": []
+ },
+ "rnfe": {
+ "title": "271",
+ "intro": []
},
"xdyh": {
"title": "270",
"intro": []
},
- "quiz-graphs-and-trees": {
- "title": "Graphs and Trees Quiz",
- "intro": ["Test what you've learned in this quiz on Graphs and Trees."]
- },
"vjgg": {
"title": "272",
"intro": []
},
- "lab-nth-fibonacci-number-generator": {
- "title": "Build the nth Fibonacci number generator",
- "intro": [
- "For this lab, you will implement the nth Fibonacci number generator."
- ]
- },
- "kaui": {
- "title": "274",
+ "ceds": {
+ "title": "273",
"intro": []
},
- "quiz-dynamic-programming": {
- "title": "Dynamic Programming Quiz",
+ "quiz-react-state-and-hooks": {
+ "title": "React State and Hooks Quiz",
"intro": [
- "Test what you've learned in this quiz on Dynamic Programming."
+ "Test what you've learned in this quiz on React State and Hooks."
]
},
+ "ftmi": {
+ "title": "275",
+ "intro": []
+ },
"sgau": {
"title": "276",
"intro": []
@@ -3320,53 +3335,65 @@
"title": "279",
"intro": []
},
- "lab-pokemon-search-app": {
- "title": "Build a Pokémon Search App",
- "intro": ["For this project, you will build a Pokémon search app."]
+ "lrof": {
+ "title": "280",
+ "intro": []
},
"vyzp": {
"title": "281",
"intro": []
},
- "icdr": {
- "title": "283",
+ "zagz": {
+ "title": "282",
"intro": []
},
+ "quiz-advanced-react": {
+ "title": "Advanced React Quiz",
+ "intro": ["Test what you've learned in this quiz on Advanced React."]
+ },
"zdsj": {
"title": "284",
"intro": []
},
- "mzae": {
- "title": "285",
- "intro": []
+ "review-web-performance": {
+ "title": "Web Performance Review",
+ "intro": [
+ "Review the Web Performance concepts to prepare for the upcoming quiz."
+ ]
},
- "gjbf": {
- "title": "286",
- "intro": []
+ "quiz-web-performance": {
+ "title": "Web Performance Quiz",
+ "intro": ["Test what you've learned in this quiz on Web Performance."]
},
"mbpv": {
"title": "287",
"intro": []
},
- "eeez": {
- "title": "288",
- "intro": []
+ "review-css-libraries-and-frameworks": {
+ "title": "CSS Libraries and Frameworks Review",
+ "intro": [
+ "Review the CSS Libraries and Frameworks concepts to prepare for the upcoming quiz."
+ ]
},
- "quiz-web-standards": {
- "title": "Web Standards Quiz",
- "intro": ["Test what you've learned in this quiz on Web Standards."]
+ "quiz-css-libraries-and-frameworks": {
+ "title": "CSS Libraries and Frameworks Quiz",
+ "intro": [
+ "Test what you've learned in this quiz on CSS Libraries and Frameworks."
+ ]
},
"khuu": {
"title": "290",
"intro": []
},
- "xdly": {
- "title": "291",
- "intro": []
+ "review-testing": {
+ "title": "Testing Review",
+ "intro": [
+ "Review the Testing concepts to prepare for the upcoming quiz."
+ ]
},
- "rhhl": {
- "title": "292",
- "intro": []
+ "quiz-testing": {
+ "title": "Testing Quiz",
+ "intro": ["Test what you've learned in this quiz on Testing."]
},
"trvf": {
"title": "293",
@@ -3384,104 +3411,8 @@
"title": "296",
"intro": []
},
- "quiz-react-basics": {
- "title": "React Basics Quiz",
- "intro": ["Test what you've learned in this quiz on React Basics."]
- },
- "hfwi": {
- "title": "298",
- "intro": []
- },
- "rnwr": {
- "title": "299",
- "intro": []
- },
- "oeqv": {
- "title": "300",
- "intro": []
- },
- "rdzk": {
- "title": "301",
- "intro": []
- },
- "vtpz": {
- "title": "302",
- "intro": []
- },
- "dfwl": {
- "title": "303",
- "intro": []
- },
- "adzm": {
- "title": "304",
- "intro": []
- },
- "quiz-react-state-and-hooks": {
- "title": "React State and Hooks Quiz",
- "intro": [
- "Test what you've learned in this quiz on React State and Hooks."
- ]
- },
- "voks": {
- "title": "306",
- "intro": []
- },
- "uwum": {
- "title": "307",
- "intro": []
- },
- "ukem": {
- "title": "308",
- "intro": []
- },
- "sdjg": {
- "title": "309",
- "intro": []
- },
- "buzx": {
- "title": "310",
- "intro": []
- },
- "pexz": {
- "title": "311",
- "intro": []
- },
- "prlo": {
- "title": "312",
- "intro": []
- },
- "jsnd": {
- "title": "313",
- "intro": []
- },
- "quiz-advanced-react": {
- "title": "Advanced React Quiz",
- "intro": ["Test what you've learned in this quiz on Advanced React."]
- },
- "tkgg": {
- "title": "315",
- "intro": []
- },
- "review-web-performance": {
- "title": "Web Performance Review",
- "intro": [
- "Review the Web Performance concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-web-performance": {
- "title": "Web Performance Quiz",
- "intro": ["Test what you've learned in this quiz on Web Performance."]
- },
- "hzab": {
- "title": "318",
- "intro": []
- },
- "ggea": {
- "title": "319",
- "intro": []
- },
- "vgvz": {
- "title": "320",
+ "muyw": {
+ "title": "297",
"intro": []
},
"review-typescript": {
@@ -3494,48 +3425,18 @@
"title": "TypeScript Quiz",
"intro": ["Test what you've learned in this quiz on TypeScript."]
},
- "zhhp": {
- "title": "323",
- "intro": []
- },
- "review-css-libraries-and-frameworks": {
- "title": "CSS Libraries and Frameworks Review",
- "intro": [
- "Review the CSS Libraries and Frameworks concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-css-libraries-and-frameworks": {
- "title": "CSS Libraries and Frameworks Quiz",
- "intro": [
- "Test what you've learned in this quiz on CSS Libraries and Frameworks."
- ]
- },
- "gora": {
- "title": "326",
- "intro": []
- },
- "review-testing": {
- "title": "Testing Review",
- "intro": [
- "Review the Testing concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-testing": {
- "title": "Testing Quiz",
- "intro": ["Test what you've learned in this quiz on Testing."]
- },
"review-front-end-libraries": {
"title": "Front End Libraries Review",
"intro": [
"Review the Front End Libraries concepts to prepare for the upcoming quiz."
]
},
- "mfwu": {
- "title": "330",
+ "rdzk": {
+ "title": "301",
"intro": []
},
- "dfcd": {
- "title": "331",
+ "vtpz": {
+ "title": "302",
"intro": []
},
"workshop-bash-boilerplate": {
@@ -3555,8 +3456,8 @@
"title": "Bash Commands Quiz",
"intro": ["Test what you've learned in this quiz on Bash Commands."]
},
- "thsj": {
- "title": "335",
+ "voks": {
+ "title": "306",
"intro": []
},
"workshop-mario-database": {
@@ -3584,8 +3485,8 @@
"Test what you've learned in this quiz on Relational Databases."
]
},
- "ynqt": {
- "title": "340",
+ "pexz": {
+ "title": "311",
"intro": []
},
"workshop-bash-five-programs": {
@@ -3605,8 +3506,8 @@
"title": "Bash Scripting Quiz",
"intro": ["Test what you've learned in this quiz on Bash Scripting."]
},
- "pegc": {
- "title": "344",
+ "tkgg": {
+ "title": "315",
"intro": []
},
"workshop-sql-student-database-part-1": {
@@ -3658,8 +3559,8 @@
"title": "Bash and SQL Quiz",
"intro": ["Test what you've learned in this quiz on Bash and SQL."]
},
- "movb": {
- "title": "353",
+ "eeez": {
+ "title": "324",
"intro": []
},
"workshop-castle": {
@@ -3677,8 +3578,8 @@
"title": "Nano Quiz",
"intro": ["Test what you've learned in this quiz on Nano."]
},
- "pzmc": {
- "title": "357",
+ "rhhl": {
+ "title": "328",
"intro": []
},
"workshop-sql-reference-object": {
@@ -3714,6 +3615,122 @@
"Review the Relational Databases concepts to prepare for the upcoming quiz."
]
},
+ "thsj": {
+ "title": "335",
+ "intro": []
+ },
+ "uwum": {
+ "title": "336",
+ "intro": []
+ },
+ "asfv": {
+ "title": "337",
+ "intro": []
+ },
+ "bvfx": {
+ "title": "338",
+ "intro": []
+ },
+ "buzx": {
+ "title": "339",
+ "intro": []
+ },
+ "ynqt": {
+ "title": "340",
+ "intro": []
+ },
+ "prlo": {
+ "title": "341",
+ "intro": []
+ },
+ "jsnd": {
+ "title": "342",
+ "intro": []
+ },
+ "sxdc": {
+ "title": "343",
+ "intro": []
+ },
+ "pegc": {
+ "title": "344",
+ "intro": []
+ },
+ "mzae": {
+ "title": "345",
+ "intro": []
+ },
+ "gjbf": {
+ "title": "346",
+ "intro": []
+ },
+ "hzab": {
+ "title": "347",
+ "intro": []
+ },
+ "ggea": {
+ "title": "348",
+ "intro": []
+ },
+ "vgvz": {
+ "title": "349",
+ "intro": []
+ },
+ "hfwi": {
+ "title": "350",
+ "intro": []
+ },
+ "rnwr": {
+ "title": "351",
+ "intro": []
+ },
+ "zhhp": {
+ "title": "352",
+ "intro": []
+ },
+ "movb": {
+ "title": "353",
+ "intro": []
+ },
+ "ngor": {
+ "title": "354",
+ "intro": []
+ },
+ "gora": {
+ "title": "355",
+ "intro": []
+ },
+ "xdly": {
+ "title": "356",
+ "intro": []
+ },
+ "pzmc": {
+ "title": "357",
+ "intro": []
+ },
+ "oeqv": {
+ "title": "358",
+ "intro": []
+ },
+ "mfwu": {
+ "title": "359",
+ "intro": []
+ },
+ "dfcd": {
+ "title": "360",
+ "intro": []
+ },
+ "dfwl": {
+ "title": "361",
+ "intro": []
+ },
+ "adzm": {
+ "title": "362",
+ "intro": []
+ },
+ "kaui": {
+ "title": "363",
+ "intro": []
+ },
"zpjj": {
"title": "364",
"intro": []
@@ -3722,17 +3739,13 @@
"title": "365",
"intro": []
},
- "review-security-and-privacy": {
- "title": "Security and Privacy Review",
- "intro": [
- "Review the Security and Privacy concepts to prepare for the upcoming quiz."
- ]
+ "ukem": {
+ "title": "366",
+ "intro": []
},
- "quiz-security-and-privacy": {
- "title": "Security and Privacy Quiz",
- "intro": [
- "Test what you've learned in this quiz on Security and Privacy."
- ]
+ "sdjg": {
+ "title": "367",
+ "intro": []
},
"qjov": {
"title": "368",
@@ -3762,6 +3775,10 @@
"title": "382",
"intro": []
},
+ "xfrd": {
+ "title": "383",
+ "intro": []
+ },
"nkjt": {
"title": "384",
"intro": []
diff --git a/client/i18n/locales/espanol/translations.json b/client/i18n/locales/espanol/translations.json
index a326085c33fb14..cf91bb06b54d37 100644
--- a/client/i18n/locales/espanol/translations.json
+++ b/client/i18n/locales/espanol/translations.json
@@ -852,7 +852,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": "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.",
+ "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.",
"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!",
diff --git a/client/i18n/locales/german/intro.json b/client/i18n/locales/german/intro.json
index 2c20f172d77cc4..40a7dd0f7f0242 100644
--- a/client/i18n/locales/german/intro.json
+++ b/client/i18n/locales/german/intro.json
@@ -1709,9 +1709,11 @@
"By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer."
],
"blocks": {
- "efpl": {
- "title": "0",
- "intro": []
+ "lecture-welcome-to-freecodecamp": {
+ "title": "Welcome to freeCodeCamp",
+ "intro": [
+ "Watch these videos to learn what freeCodeCamp is, and how millions of people have learned to code and gotten developer jobs using it."
+ ]
},
"lecture-what-is-html": {
"title": "What is HTML?",
@@ -2262,7 +2264,8 @@
"review-css-accessibility": {
"title": "CSS Accessibility Review",
"intro": [
- "Review the CSS Accessibility concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on CSS and accessibility, you first need to review.",
+ "Open up this page to review concepts like color contrast tools and accessibility best practices."
]
},
"quiz-css-accessibility": {
@@ -2425,7 +2428,8 @@
"review-css-grid": {
"title": "CSS Grid Review",
"intro": [
- "Review the CSS Grid concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on the fundamentals of CSS Grid, you first need to review.",
+ "Open up this page to review how to work with the different CSS Grid properties like grid-template-columns, grid-gap and more."
]
},
"quiz-css-grid": {
@@ -2438,9 +2442,12 @@
"In these lecture videos, you will learn about animations and accessibility."
]
},
- "dpaq": {
- "title": "120",
- "intro": []
+ "workshop-ferris-wheel": {
+ "title": "Build an Animated Ferris Wheel",
+ "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."
+ ]
},
"lab-moon-orbit": {
"title": "Build a Moon Orbit",
@@ -2464,7 +2471,8 @@
"review-css-animations": {
"title": "CSS Animations Review",
"intro": [
- "Review the CSS Animations concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on working with CSS animations, you first need to review.",
+ "Open up this page to review concepts including prefers-reduced-motion, the @keyframes rule and more."
]
},
"quiz-css-animations": {
@@ -2475,7 +2483,10 @@
},
"review-css": {
"title": "CSS Review",
- "intro": ["Review the CSS concepts to prepare for the upcoming exam."]
+ "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."
+ ]
},
"wvjx": {
"title": "127",
@@ -2515,7 +2526,8 @@
"review-javascript-variables-and-data-types": {
"title": "JavaScript Variables and Data Types Review",
"intro": [
- "Review the JavaScript Variables and Data Types concepts to prepare for the upcoming quiz."
+ "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."
]
},
"quiz-javascript-variables-and-data-types": {
@@ -2546,7 +2558,8 @@
"review-javascript-strings": {
"title": "JavaScript Strings Review",
"intro": [
- "Review the JavaScript Strings concepts to prepare for the upcoming quiz."
+ "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."
]
},
"quiz-javascript-strings": {
@@ -2647,7 +2660,8 @@
"review-javascript-functions": {
"title": "JavaScript Functions Review",
"intro": [
- "Review the JavaScript Functions concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on JavaScript functions, HTML, you first need to review the concepts.",
+ "Open up this page to review functions, arrow functions and scope."
]
},
"quiz-javascript-functions": {
@@ -2656,9 +2670,11 @@
"Test what you've learned in this quiz on JavaScript Functions."
]
},
- "mexq": {
- "title": "157",
- "intro": []
+ "lecture-working-with-arrays": {
+ "title": "Working with Arrays",
+ "intro": [
+ "In these lecture videos, you will learn about working with JavaScript arrays."
+ ]
},
"workshop-shopping-list": {
"title": "Build a Shopping List",
@@ -2673,9 +2689,11 @@
"In this lab, you will review working with arrays and random numbers by building a lunch picker program."
]
},
- "mokm": {
- "title": "160",
- "intro": []
+ "lecture-working-with-common-array-methods": {
+ "title": "Working with Common Array Methods",
+ "intro": [
+ "In these lecture videos, you will learn about common array methods."
+ ]
},
"review-javascript-arrays": {
"title": "JavaScript Arrays Review",
@@ -2687,9 +2705,11 @@
"title": "JavaScript Arrays Quiz",
"intro": ["Test what you've learned in this quiz on JavaScript Arrays."]
},
- "dvnt": {
- "title": "163",
- "intro": []
+ "lecture-working-with-objects": {
+ "title": "Working with Objects",
+ "intro": [
+ "In these lecture videos, you will learn about working with objects in JavaScript."
+ ]
},
"workshop-recipe-tracker": {
"title": "Build a Recipe Tracker",
@@ -2713,9 +2733,11 @@
"Test what you've learned in this quiz on JavaScript Objects."
]
},
- "kgtw": {
- "title": "168",
- "intro": []
+ "lecture-working-with-loops": {
+ "title": "Working with Loops",
+ "intro": [
+ "In these lecture videos, you will learn about working with loops in JavaScript."
+ ]
},
"workshop-sentence-analyzer": {
"title": "Build a Sentence Analyzer",
@@ -2737,9 +2759,11 @@
"title": "JavaScript Loops Quiz",
"intro": ["Test what you've learned in this quiz on JavaScript Loops."]
},
- "hjtr": {
- "title": "173",
- "intro": []
+ "lecture-understanding-core-javascript-fundamentals": {
+ "title": "Understanding Core JavaScript Fundamentals",
+ "intro": [
+ "In these lecture videos, you will learn more about core JavaScript fundamentals."
+ ]
},
"lab-pyramid-generator": {
"title": "Build a Pyramid Generator",
@@ -2749,9 +2773,11 @@
"title": "Build a Gradebook App",
"intro": ["For this lab, you will create a gradebook app."]
},
- "epfc": {
- "title": "176",
- "intro": []
+ "lecture-the-var-keyword-and-hoisting": {
+ "title": "The var Keyword and Hoisting",
+ "intro": [
+ "In these lecture videos, you will learn about the var keyword and hoisting in JavaScript."
+ ]
},
"lab-inventory-management-program": {
"title": "Build an Inventory Management Program",
@@ -2759,9 +2785,11 @@
"For this lab, you will build an inventory management program using JavaScript."
]
},
- "fbbn": {
- "title": "178",
- "intro": []
+ "lecture-understanding-modules-imports-and-exports": {
+ "title": "Understanding Modules, Imports, and Exports",
+ "intro": [
+ "In these lecture videos, you will learn about modules, imports, and exports in JavaScript."
+ ]
},
"lnmg": {
"title": "179",
@@ -2779,13 +2807,17 @@
"Test what you've learned in this quiz on JavaScript Fundamentals Quiz."
]
},
- "plic": {
- "title": "182",
- "intro": []
+ "lecture-working-with-higher-order-functions-and-callbacks": {
+ "title": "Working with Higher Order Functions and Callbacks",
+ "intro": [
+ "In these lecture videos, you will learn about working with higher order functions and callbacks."
+ ]
},
- "vjmm": {
- "title": "183",
- "intro": []
+ "workshop-library-manager": {
+ "title": "Build a Library Manager",
+ "intro": [
+ "In this workshop, you will learn higher order array methods by building a library manager"
+ ]
},
"bxtv": {
"title": "184",
@@ -2803,14 +2835,22 @@
"Test what you've learned in this quiz on JavaScript Higher Order Functions."
]
},
- "esfh": {
- "title": "187",
- "intro": []
+ "lecture-working-with-the-dom-click-events-and-web-apis": {
+ "title": "Working with the DOM, Click Events, and Web APIs",
+ "intro": [
+ "In these lecture videos, you will learn how to work with the DOM, click events, and web APIs, using Javascript."
+ ]
},
"gibb": {
"title": "188",
"intro": []
},
+ "workshop-storytelling-app": {
+ "title": "Build a Storytelling App",
+ "intro": [
+ "In this workshop, you will build a storytelling app that will allow you to list different stories based on genre."
+ ]
+ },
"lab-favorite-icon-toggler": {
"title": "Build a Favorite Icon Toggler",
"intro": [
@@ -2829,13 +2869,17 @@
"Test what you've learned in this quiz on DOM Manipulation and Click Events with JavaScript Quiz."
]
},
- "ubpx": {
- "title": "192",
- "intro": []
+ "lecture-understanding-the-event-object-and-event-delegation": {
+ "title": "Understanding the Event Object and Event Delegation",
+ "intro": [
+ "In these lecture videos, you will learn about the event object and event delegation."
+ ]
},
- "lbyi": {
- "title": "193",
- "intro": []
+ "workshop-music-instrument-filter": {
+ "title": "Build a Music Instrument Filter",
+ "intro": [
+ "In this workshop, you will build a music instrument filter with JavaScript."
+ ]
},
"lab-real-time-counter": {
"title": "Build a Real Time Counter",
@@ -2901,9 +2945,12 @@
"title": "205",
"intro": []
},
- "dqth": {
- "title": "206",
- "intro": []
+ "workshop-spam-filter": {
+ "title": "Build a Spam Filter",
+ "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."
+ ]
},
"lab-markdown-to-html-converter": {
"title": "Build a Markdown to HTML Converter",
@@ -3051,9 +3098,12 @@
"title": "235",
"intro": []
},
- "peyf": {
- "title": "236",
- "intro": []
+ "workshop-shopping-cart": {
+ "title": "Build a Shopping Cart",
+ "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."
+ ]
},
"lab-project-idea-board": {
"title": "Build a Project Idea Board",
@@ -3119,50 +3169,29 @@
"Test what you've learned in this quiz on JavaScript Functional Programming."
]
},
- "lab-quicksort-algorithm": {
- "title": "Build the Quicksort Algorithm",
- "intro": [
- "For this lab, you will implement the Quicksort algorithm using JavaScript."
- ]
- },
"dtfv": {
"title": "240",
"intro": []
},
- "quiz-searching-and-sorting-algorithms": {
- "title": "Searching and Sorting Algorithms Quiz",
- "intro": [
- "Test what you've learned in this quiz on Searching and Sorting Algorithms."
- ]
- },
"bnvw": {
- "title": "242",
+ "title": "241",
"intro": []
},
+ "workshop-decimal-to-binary-converter": {
+ "title": "Build a Decimal to Binary Converter",
+ "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."
+ ]
+ },
"xkhk": {
"title": "243",
"intro": []
},
- "lab-roman-numeral-converter": {
- "title": "Build a Roman Numeral Converter",
- "intro": [
- "For this lab, you'll build an application that converts integers to Roman numerals."
- ]
- },
"yaxm": {
"title": "245",
"intro": []
},
- "lab-telephone-number-validator": {
- "title": "Build a Telephone Number Validator",
- "intro": [
- "For this lab, you'll build an application that checks if a number is a valid United States phone number."
- ]
- },
- "lab-cash-register": {
- "title": "Build a Cash Register",
- "intro": ["For this lab, you will build a cash register."]
- },
"udia": {
"title": "248",
"intro": []
@@ -3173,12 +3202,6 @@
"Review the JavaScript Functional Programming concepts to prepare for the upcoming quiz."
]
},
- "quiz-javascript-problem-solving-and-algorithmic-thinking": {
- "title": "JavaScript Problem Solving and Algorithmic Thinking Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Problem Solving and Algorithmic Thinking."
- ]
- },
"mjbe": {
"title": "251",
"intro": []
@@ -3220,88 +3243,80 @@
"title": "258",
"intro": []
},
- "mbib": {
- "title": "259",
- "intro": []
+ "lecture-introduction-to-javascript-libraries-and-frameworks": {
+ "title": "Introduction to JavaScript Libraries and Frameworks",
+ "intro": [
+ "In these lecture videos, you will get an introduction to JavaScript libraries and frameworks."
+ ]
},
"oxiv": {
"title": "260",
"intro": []
},
- "quiz-javascript-object-oriented-programming": {
- "title": "JavaScript Object Oriented Programming Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Object Oriented Programming."
- ]
- },
- "nixz": {
- "title": "262",
+ "fjvx": {
+ "title": "261",
"intro": []
},
- "lab-stack-class": {
- "title": "Build a Stack Class",
+ "lecture-working-with-data-in-react": {
+ "title": "Working with Data in React",
"intro": [
- "For this lab, you will build a stack class using JavaScript."
+ "In these lecture videos, you will learn about working with data in React."
]
},
- "lab-linked-list-class": {
- "title": "Build a Linked List Class",
- "intro": [
- "For this lab, you will build a linked list class using JavaScript."
- ]
+ "cdfr": {
+ "title": "263",
+ "intro": []
},
- "lab-hash-table-class": {
- "title": "Build a Hash Table Class",
- "intro": ["For this lab, you will build a hash table using JavaScript."]
+ "bgtd": {
+ "title": "264",
+ "intro": []
},
- "muyw": {
- "title": "266",
+ "ascd": {
+ "title": "265",
"intro": []
},
- "quiz-javascript-data-structures": {
- "title": "JavaScript Data Structures Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Data Structures."
- ]
+ "quiz-react-basics": {
+ "title": "React Basics Quiz",
+ "intro": ["Test what you've learned in this quiz on React Basics."]
+ },
+ "rugw": {
+ "title": "267",
+ "intro": []
},
"rmpy": {
"title": "268",
"intro": []
},
- "lab-depth-first-search": {
- "title": "Implement the Depth-First Search Algorithm",
- "intro": [
- "For this lab, you will use JavaScript to implement the Depth-First Search algorithm."
- ]
+ "dbta": {
+ "title": "269",
+ "intro": []
+ },
+ "rnfe": {
+ "title": "271",
+ "intro": []
},
"xdyh": {
"title": "270",
"intro": []
},
- "quiz-graphs-and-trees": {
- "title": "Graphs and Trees Quiz",
- "intro": ["Test what you've learned in this quiz on Graphs and Trees."]
- },
"vjgg": {
"title": "272",
"intro": []
},
- "lab-nth-fibonacci-number-generator": {
- "title": "Build the nth Fibonacci number generator",
- "intro": [
- "For this lab, you will implement the nth Fibonacci number generator."
- ]
- },
- "kaui": {
- "title": "274",
+ "ceds": {
+ "title": "273",
"intro": []
},
- "quiz-dynamic-programming": {
- "title": "Dynamic Programming Quiz",
+ "quiz-react-state-and-hooks": {
+ "title": "React State and Hooks Quiz",
"intro": [
- "Test what you've learned in this quiz on Dynamic Programming."
+ "Test what you've learned in this quiz on React State and Hooks."
]
},
+ "ftmi": {
+ "title": "275",
+ "intro": []
+ },
"sgau": {
"title": "276",
"intro": []
@@ -3318,53 +3333,65 @@
"title": "279",
"intro": []
},
- "lab-pokemon-search-app": {
- "title": "Build a Pokémon Search App",
- "intro": ["For this project, you will build a Pokémon search app."]
+ "lrof": {
+ "title": "280",
+ "intro": []
},
"vyzp": {
"title": "281",
"intro": []
},
- "icdr": {
- "title": "283",
+ "zagz": {
+ "title": "282",
"intro": []
},
+ "quiz-advanced-react": {
+ "title": "Advanced React Quiz",
+ "intro": ["Test what you've learned in this quiz on Advanced React."]
+ },
"zdsj": {
"title": "284",
"intro": []
},
- "mzae": {
- "title": "285",
- "intro": []
+ "review-web-performance": {
+ "title": "Web Performance Review",
+ "intro": [
+ "Review the Web Performance concepts to prepare for the upcoming quiz."
+ ]
},
- "gjbf": {
- "title": "286",
- "intro": []
+ "quiz-web-performance": {
+ "title": "Web Performance Quiz",
+ "intro": ["Test what you've learned in this quiz on Web Performance."]
},
"mbpv": {
"title": "287",
"intro": []
},
- "eeez": {
- "title": "288",
- "intro": []
+ "review-css-libraries-and-frameworks": {
+ "title": "CSS Libraries and Frameworks Review",
+ "intro": [
+ "Review the CSS Libraries and Frameworks concepts to prepare for the upcoming quiz."
+ ]
},
- "quiz-web-standards": {
- "title": "Web Standards Quiz",
- "intro": ["Test what you've learned in this quiz on Web Standards."]
+ "quiz-css-libraries-and-frameworks": {
+ "title": "CSS Libraries and Frameworks Quiz",
+ "intro": [
+ "Test what you've learned in this quiz on CSS Libraries and Frameworks."
+ ]
},
"khuu": {
"title": "290",
"intro": []
},
- "xdly": {
- "title": "291",
- "intro": []
+ "review-testing": {
+ "title": "Testing Review",
+ "intro": [
+ "Review the Testing concepts to prepare for the upcoming quiz."
+ ]
},
- "rhhl": {
- "title": "292",
- "intro": []
+ "quiz-testing": {
+ "title": "Testing Quiz",
+ "intro": ["Test what you've learned in this quiz on Testing."]
},
"trvf": {
"title": "293",
@@ -3382,104 +3409,8 @@
"title": "296",
"intro": []
},
- "quiz-react-basics": {
- "title": "React Basics Quiz",
- "intro": ["Test what you've learned in this quiz on React Basics."]
- },
- "hfwi": {
- "title": "298",
- "intro": []
- },
- "rnwr": {
- "title": "299",
- "intro": []
- },
- "oeqv": {
- "title": "300",
- "intro": []
- },
- "rdzk": {
- "title": "301",
- "intro": []
- },
- "vtpz": {
- "title": "302",
- "intro": []
- },
- "dfwl": {
- "title": "303",
- "intro": []
- },
- "adzm": {
- "title": "304",
- "intro": []
- },
- "quiz-react-state-and-hooks": {
- "title": "React State and Hooks Quiz",
- "intro": [
- "Test what you've learned in this quiz on React State and Hooks."
- ]
- },
- "voks": {
- "title": "306",
- "intro": []
- },
- "uwum": {
- "title": "307",
- "intro": []
- },
- "ukem": {
- "title": "308",
- "intro": []
- },
- "sdjg": {
- "title": "309",
- "intro": []
- },
- "buzx": {
- "title": "310",
- "intro": []
- },
- "pexz": {
- "title": "311",
- "intro": []
- },
- "prlo": {
- "title": "312",
- "intro": []
- },
- "jsnd": {
- "title": "313",
- "intro": []
- },
- "quiz-advanced-react": {
- "title": "Advanced React Quiz",
- "intro": ["Test what you've learned in this quiz on Advanced React."]
- },
- "tkgg": {
- "title": "315",
- "intro": []
- },
- "review-web-performance": {
- "title": "Web Performance Review",
- "intro": [
- "Review the Web Performance concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-web-performance": {
- "title": "Web Performance Quiz",
- "intro": ["Test what you've learned in this quiz on Web Performance."]
- },
- "hzab": {
- "title": "318",
- "intro": []
- },
- "ggea": {
- "title": "319",
- "intro": []
- },
- "vgvz": {
- "title": "320",
+ "muyw": {
+ "title": "297",
"intro": []
},
"review-typescript": {
@@ -3492,48 +3423,18 @@
"title": "TypeScript Quiz",
"intro": ["Test what you've learned in this quiz on TypeScript."]
},
- "zhhp": {
- "title": "323",
- "intro": []
- },
- "review-css-libraries-and-frameworks": {
- "title": "CSS Libraries and Frameworks Review",
- "intro": [
- "Review the CSS Libraries and Frameworks concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-css-libraries-and-frameworks": {
- "title": "CSS Libraries and Frameworks Quiz",
- "intro": [
- "Test what you've learned in this quiz on CSS Libraries and Frameworks."
- ]
- },
- "gora": {
- "title": "326",
- "intro": []
- },
- "review-testing": {
- "title": "Testing Review",
- "intro": [
- "Review the Testing concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-testing": {
- "title": "Testing Quiz",
- "intro": ["Test what you've learned in this quiz on Testing."]
- },
"review-front-end-libraries": {
"title": "Front End Libraries Review",
"intro": [
"Review the Front End Libraries concepts to prepare for the upcoming quiz."
]
},
- "mfwu": {
- "title": "330",
+ "rdzk": {
+ "title": "301",
"intro": []
},
- "dfcd": {
- "title": "331",
+ "vtpz": {
+ "title": "302",
"intro": []
},
"workshop-bash-boilerplate": {
@@ -3553,8 +3454,8 @@
"title": "Bash Commands Quiz",
"intro": ["Test what you've learned in this quiz on Bash Commands."]
},
- "thsj": {
- "title": "335",
+ "voks": {
+ "title": "306",
"intro": []
},
"workshop-mario-database": {
@@ -3582,8 +3483,8 @@
"Test what you've learned in this quiz on Relational Databases."
]
},
- "ynqt": {
- "title": "340",
+ "pexz": {
+ "title": "311",
"intro": []
},
"workshop-bash-five-programs": {
@@ -3603,8 +3504,8 @@
"title": "Bash Scripting Quiz",
"intro": ["Test what you've learned in this quiz on Bash Scripting."]
},
- "pegc": {
- "title": "344",
+ "tkgg": {
+ "title": "315",
"intro": []
},
"workshop-sql-student-database-part-1": {
@@ -3656,8 +3557,8 @@
"title": "Bash and SQL Quiz",
"intro": ["Test what you've learned in this quiz on Bash and SQL."]
},
- "movb": {
- "title": "353",
+ "eeez": {
+ "title": "324",
"intro": []
},
"workshop-castle": {
@@ -3675,8 +3576,8 @@
"title": "Nano Quiz",
"intro": ["Test what you've learned in this quiz on Nano."]
},
- "pzmc": {
- "title": "357",
+ "rhhl": {
+ "title": "328",
"intro": []
},
"workshop-sql-reference-object": {
@@ -3712,6 +3613,122 @@
"Review the Relational Databases concepts to prepare for the upcoming quiz."
]
},
+ "thsj": {
+ "title": "335",
+ "intro": []
+ },
+ "uwum": {
+ "title": "336",
+ "intro": []
+ },
+ "asfv": {
+ "title": "337",
+ "intro": []
+ },
+ "bvfx": {
+ "title": "338",
+ "intro": []
+ },
+ "buzx": {
+ "title": "339",
+ "intro": []
+ },
+ "ynqt": {
+ "title": "340",
+ "intro": []
+ },
+ "prlo": {
+ "title": "341",
+ "intro": []
+ },
+ "jsnd": {
+ "title": "342",
+ "intro": []
+ },
+ "sxdc": {
+ "title": "343",
+ "intro": []
+ },
+ "pegc": {
+ "title": "344",
+ "intro": []
+ },
+ "mzae": {
+ "title": "345",
+ "intro": []
+ },
+ "gjbf": {
+ "title": "346",
+ "intro": []
+ },
+ "hzab": {
+ "title": "347",
+ "intro": []
+ },
+ "ggea": {
+ "title": "348",
+ "intro": []
+ },
+ "vgvz": {
+ "title": "349",
+ "intro": []
+ },
+ "hfwi": {
+ "title": "350",
+ "intro": []
+ },
+ "rnwr": {
+ "title": "351",
+ "intro": []
+ },
+ "zhhp": {
+ "title": "352",
+ "intro": []
+ },
+ "movb": {
+ "title": "353",
+ "intro": []
+ },
+ "ngor": {
+ "title": "354",
+ "intro": []
+ },
+ "gora": {
+ "title": "355",
+ "intro": []
+ },
+ "xdly": {
+ "title": "356",
+ "intro": []
+ },
+ "pzmc": {
+ "title": "357",
+ "intro": []
+ },
+ "oeqv": {
+ "title": "358",
+ "intro": []
+ },
+ "mfwu": {
+ "title": "359",
+ "intro": []
+ },
+ "dfcd": {
+ "title": "360",
+ "intro": []
+ },
+ "dfwl": {
+ "title": "361",
+ "intro": []
+ },
+ "adzm": {
+ "title": "362",
+ "intro": []
+ },
+ "kaui": {
+ "title": "363",
+ "intro": []
+ },
"zpjj": {
"title": "364",
"intro": []
@@ -3720,17 +3737,13 @@
"title": "365",
"intro": []
},
- "review-security-and-privacy": {
- "title": "Security and Privacy Review",
- "intro": [
- "Review the Security and Privacy concepts to prepare for the upcoming quiz."
- ]
+ "ukem": {
+ "title": "366",
+ "intro": []
},
- "quiz-security-and-privacy": {
- "title": "Security and Privacy Quiz",
- "intro": [
- "Test what you've learned in this quiz on Security and Privacy."
- ]
+ "sdjg": {
+ "title": "367",
+ "intro": []
},
"qjov": {
"title": "368",
@@ -3760,6 +3773,10 @@
"title": "382",
"intro": []
},
+ "xfrd": {
+ "title": "383",
+ "intro": []
+ },
"nkjt": {
"title": "384",
"intro": []
diff --git a/client/i18n/locales/german/translations.json b/client/i18n/locales/german/translations.json
index 952ca7cca11657..b1106f40bdb9b1 100644
--- a/client/i18n/locales/german/translations.json
+++ b/client/i18n/locales/german/translations.json
@@ -852,7 +852,7 @@
"expired-link": "Es sieht so aus, als ob der Link, den du geklickt hast, abgelaufen wäre. Bitte fordere einen neuen Link an, um dich anzumelden.",
"signin-success": "Geschafft! Du hast dich in deinem Konto angemeldet. Viel Spaß beim Programmieren!",
"social-auth-gone": "Aus Gründen des Datenschutzes verabschieden wir uns von der sozialen Authentifizierung. Beim nächsten Mal empfehlen wir, deine E-Mail-Adresse zu verwenden: {{email}}, um sich stattdessen anzumelden.",
- "name-needed": "Wir benötigen deinen Namen, damit wir ihn auf deinem Zertifikat eintragen können. Füge deinen Namen zu deinen Kontoeinstellungen hinzu und klicke auf den Speichern-Button. Dann können wir dein Zertifikat ausstellen.",
+ "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.",
"incomplete-steps": "Es sieht so aus, als hättest du die notwendigen Schritte nicht abgeschlossen. Bitte vervollständige die erforderlichen Projekte, um die {{name}} Zertifizierung zu erhalten.",
"already-claimed": "Es sieht so aus, als hättest du bereits die {{name}} Zertifizierung erhalten",
"cert-claim-success": "@{{username}}, du hast erfolgreich die {{name}} Zertifizierung bestanden! Herzlichen Glückwunsch im Namen des freeCodeCamp.org Teams!",
diff --git a/client/i18n/locales/italian/intro.json b/client/i18n/locales/italian/intro.json
index 69bbe612cddc52..743d6575c1c205 100644
--- a/client/i18n/locales/italian/intro.json
+++ b/client/i18n/locales/italian/intro.json
@@ -1709,9 +1709,11 @@
"By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer."
],
"blocks": {
- "efpl": {
- "title": "0",
- "intro": []
+ "lecture-welcome-to-freecodecamp": {
+ "title": "Welcome to freeCodeCamp",
+ "intro": [
+ "Watch these videos to learn what freeCodeCamp is, and how millions of people have learned to code and gotten developer jobs using it."
+ ]
},
"lecture-what-is-html": {
"title": "What is HTML?",
@@ -2262,7 +2264,8 @@
"review-css-accessibility": {
"title": "CSS Accessibility Review",
"intro": [
- "Review the CSS Accessibility concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on CSS and accessibility, you first need to review.",
+ "Open up this page to review concepts like color contrast tools and accessibility best practices."
]
},
"quiz-css-accessibility": {
@@ -2425,7 +2428,8 @@
"review-css-grid": {
"title": "CSS Grid Review",
"intro": [
- "Review the CSS Grid concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on the fundamentals of CSS Grid, you first need to review.",
+ "Open up this page to review how to work with the different CSS Grid properties like grid-template-columns, grid-gap and more."
]
},
"quiz-css-grid": {
@@ -2438,9 +2442,12 @@
"In these lecture videos, you will learn about animations and accessibility."
]
},
- "dpaq": {
- "title": "120",
- "intro": []
+ "workshop-ferris-wheel": {
+ "title": "Build an Animated Ferris Wheel",
+ "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."
+ ]
},
"lab-moon-orbit": {
"title": "Build a Moon Orbit",
@@ -2464,7 +2471,8 @@
"review-css-animations": {
"title": "CSS Animations Review",
"intro": [
- "Review the CSS Animations concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on working with CSS animations, you first need to review.",
+ "Open up this page to review concepts including prefers-reduced-motion, the @keyframes rule and more."
]
},
"quiz-css-animations": {
@@ -2475,7 +2483,10 @@
},
"review-css": {
"title": "CSS Review",
- "intro": ["Review the CSS concepts to prepare for the upcoming exam."]
+ "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."
+ ]
},
"wvjx": {
"title": "127",
@@ -2515,7 +2526,8 @@
"review-javascript-variables-and-data-types": {
"title": "JavaScript Variables and Data Types Review",
"intro": [
- "Review the JavaScript Variables and Data Types concepts to prepare for the upcoming quiz."
+ "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."
]
},
"quiz-javascript-variables-and-data-types": {
@@ -2546,7 +2558,8 @@
"review-javascript-strings": {
"title": "JavaScript Strings Review",
"intro": [
- "Review the JavaScript Strings concepts to prepare for the upcoming quiz."
+ "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."
]
},
"quiz-javascript-strings": {
@@ -2647,7 +2660,8 @@
"review-javascript-functions": {
"title": "JavaScript Functions Review",
"intro": [
- "Review the JavaScript Functions concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on JavaScript functions, HTML, you first need to review the concepts.",
+ "Open up this page to review functions, arrow functions and scope."
]
},
"quiz-javascript-functions": {
@@ -2656,9 +2670,11 @@
"Test what you've learned in this quiz on JavaScript Functions."
]
},
- "mexq": {
- "title": "157",
- "intro": []
+ "lecture-working-with-arrays": {
+ "title": "Working with Arrays",
+ "intro": [
+ "In these lecture videos, you will learn about working with JavaScript arrays."
+ ]
},
"workshop-shopping-list": {
"title": "Build a Shopping List",
@@ -2673,9 +2689,11 @@
"In this lab, you will review working with arrays and random numbers by building a lunch picker program."
]
},
- "mokm": {
- "title": "160",
- "intro": []
+ "lecture-working-with-common-array-methods": {
+ "title": "Working with Common Array Methods",
+ "intro": [
+ "In these lecture videos, you will learn about common array methods."
+ ]
},
"review-javascript-arrays": {
"title": "JavaScript Arrays Review",
@@ -2687,9 +2705,11 @@
"title": "JavaScript Arrays Quiz",
"intro": ["Test what you've learned in this quiz on JavaScript Arrays."]
},
- "dvnt": {
- "title": "163",
- "intro": []
+ "lecture-working-with-objects": {
+ "title": "Working with Objects",
+ "intro": [
+ "In these lecture videos, you will learn about working with objects in JavaScript."
+ ]
},
"workshop-recipe-tracker": {
"title": "Build a Recipe Tracker",
@@ -2713,9 +2733,11 @@
"Test what you've learned in this quiz on JavaScript Objects."
]
},
- "kgtw": {
- "title": "168",
- "intro": []
+ "lecture-working-with-loops": {
+ "title": "Working with Loops",
+ "intro": [
+ "In these lecture videos, you will learn about working with loops in JavaScript."
+ ]
},
"workshop-sentence-analyzer": {
"title": "Build a Sentence Analyzer",
@@ -2737,9 +2759,11 @@
"title": "JavaScript Loops Quiz",
"intro": ["Test what you've learned in this quiz on JavaScript Loops."]
},
- "hjtr": {
- "title": "173",
- "intro": []
+ "lecture-understanding-core-javascript-fundamentals": {
+ "title": "Understanding Core JavaScript Fundamentals",
+ "intro": [
+ "In these lecture videos, you will learn more about core JavaScript fundamentals."
+ ]
},
"lab-pyramid-generator": {
"title": "Build a Pyramid Generator",
@@ -2749,9 +2773,11 @@
"title": "Build a Gradebook App",
"intro": ["For this lab, you will create a gradebook app."]
},
- "epfc": {
- "title": "176",
- "intro": []
+ "lecture-the-var-keyword-and-hoisting": {
+ "title": "The var Keyword and Hoisting",
+ "intro": [
+ "In these lecture videos, you will learn about the var keyword and hoisting in JavaScript."
+ ]
},
"lab-inventory-management-program": {
"title": "Build an Inventory Management Program",
@@ -2759,9 +2785,11 @@
"For this lab, you will build an inventory management program using JavaScript."
]
},
- "fbbn": {
- "title": "178",
- "intro": []
+ "lecture-understanding-modules-imports-and-exports": {
+ "title": "Understanding Modules, Imports, and Exports",
+ "intro": [
+ "In these lecture videos, you will learn about modules, imports, and exports in JavaScript."
+ ]
},
"lnmg": {
"title": "179",
@@ -2779,13 +2807,17 @@
"Test what you've learned in this quiz on JavaScript Fundamentals Quiz."
]
},
- "plic": {
- "title": "182",
- "intro": []
+ "lecture-working-with-higher-order-functions-and-callbacks": {
+ "title": "Working with Higher Order Functions and Callbacks",
+ "intro": [
+ "In these lecture videos, you will learn about working with higher order functions and callbacks."
+ ]
},
- "vjmm": {
- "title": "183",
- "intro": []
+ "workshop-library-manager": {
+ "title": "Build a Library Manager",
+ "intro": [
+ "In this workshop, you will learn higher order array methods by building a library manager"
+ ]
},
"bxtv": {
"title": "184",
@@ -2803,14 +2835,22 @@
"Test what you've learned in this quiz on JavaScript Higher Order Functions."
]
},
- "esfh": {
- "title": "187",
- "intro": []
+ "lecture-working-with-the-dom-click-events-and-web-apis": {
+ "title": "Working with the DOM, Click Events, and Web APIs",
+ "intro": [
+ "In these lecture videos, you will learn how to work with the DOM, click events, and web APIs, using Javascript."
+ ]
},
"gibb": {
"title": "188",
"intro": []
},
+ "workshop-storytelling-app": {
+ "title": "Build a Storytelling App",
+ "intro": [
+ "In this workshop, you will build a storytelling app that will allow you to list different stories based on genre."
+ ]
+ },
"lab-favorite-icon-toggler": {
"title": "Build a Favorite Icon Toggler",
"intro": [
@@ -2829,13 +2869,17 @@
"Test what you've learned in this quiz on DOM Manipulation and Click Events with JavaScript Quiz."
]
},
- "ubpx": {
- "title": "192",
- "intro": []
+ "lecture-understanding-the-event-object-and-event-delegation": {
+ "title": "Understanding the Event Object and Event Delegation",
+ "intro": [
+ "In these lecture videos, you will learn about the event object and event delegation."
+ ]
},
- "lbyi": {
- "title": "193",
- "intro": []
+ "workshop-music-instrument-filter": {
+ "title": "Build a Music Instrument Filter",
+ "intro": [
+ "In this workshop, you will build a music instrument filter with JavaScript."
+ ]
},
"lab-real-time-counter": {
"title": "Build a Real Time Counter",
@@ -2901,9 +2945,12 @@
"title": "205",
"intro": []
},
- "dqth": {
- "title": "206",
- "intro": []
+ "workshop-spam-filter": {
+ "title": "Build a Spam Filter",
+ "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."
+ ]
},
"lab-markdown-to-html-converter": {
"title": "Build a Markdown to HTML Converter",
@@ -3051,9 +3098,12 @@
"title": "235",
"intro": []
},
- "peyf": {
- "title": "236",
- "intro": []
+ "workshop-shopping-cart": {
+ "title": "Build a Shopping Cart",
+ "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."
+ ]
},
"lab-project-idea-board": {
"title": "Build a Project Idea Board",
@@ -3119,50 +3169,29 @@
"Test what you've learned in this quiz on JavaScript Functional Programming."
]
},
- "lab-quicksort-algorithm": {
- "title": "Build the Quicksort Algorithm",
- "intro": [
- "For this lab, you will implement the Quicksort algorithm using JavaScript."
- ]
- },
"dtfv": {
"title": "240",
"intro": []
},
- "quiz-searching-and-sorting-algorithms": {
- "title": "Searching and Sorting Algorithms Quiz",
- "intro": [
- "Test what you've learned in this quiz on Searching and Sorting Algorithms."
- ]
- },
"bnvw": {
- "title": "242",
+ "title": "241",
"intro": []
},
+ "workshop-decimal-to-binary-converter": {
+ "title": "Build a Decimal to Binary Converter",
+ "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."
+ ]
+ },
"xkhk": {
"title": "243",
"intro": []
},
- "lab-roman-numeral-converter": {
- "title": "Build a Roman Numeral Converter",
- "intro": [
- "For this lab, you'll build an application that converts integers to Roman numerals."
- ]
- },
"yaxm": {
"title": "245",
"intro": []
},
- "lab-telephone-number-validator": {
- "title": "Build a Telephone Number Validator",
- "intro": [
- "For this lab, you'll build an application that checks if a number is a valid United States phone number."
- ]
- },
- "lab-cash-register": {
- "title": "Build a Cash Register",
- "intro": ["For this lab, you will build a cash register."]
- },
"udia": {
"title": "248",
"intro": []
@@ -3173,12 +3202,6 @@
"Review the JavaScript Functional Programming concepts to prepare for the upcoming quiz."
]
},
- "quiz-javascript-problem-solving-and-algorithmic-thinking": {
- "title": "JavaScript Problem Solving and Algorithmic Thinking Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Problem Solving and Algorithmic Thinking."
- ]
- },
"mjbe": {
"title": "251",
"intro": []
@@ -3220,88 +3243,80 @@
"title": "258",
"intro": []
},
- "mbib": {
- "title": "259",
- "intro": []
+ "lecture-introduction-to-javascript-libraries-and-frameworks": {
+ "title": "Introduction to JavaScript Libraries and Frameworks",
+ "intro": [
+ "In these lecture videos, you will get an introduction to JavaScript libraries and frameworks."
+ ]
},
"oxiv": {
"title": "260",
"intro": []
},
- "quiz-javascript-object-oriented-programming": {
- "title": "JavaScript Object Oriented Programming Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Object Oriented Programming."
- ]
- },
- "nixz": {
- "title": "262",
+ "fjvx": {
+ "title": "261",
"intro": []
},
- "lab-stack-class": {
- "title": "Build a Stack Class",
+ "lecture-working-with-data-in-react": {
+ "title": "Working with Data in React",
"intro": [
- "For this lab, you will build a stack class using JavaScript."
+ "In these lecture videos, you will learn about working with data in React."
]
},
- "lab-linked-list-class": {
- "title": "Build a Linked List Class",
- "intro": [
- "For this lab, you will build a linked list class using JavaScript."
- ]
+ "cdfr": {
+ "title": "263",
+ "intro": []
},
- "lab-hash-table-class": {
- "title": "Build a Hash Table Class",
- "intro": ["For this lab, you will build a hash table using JavaScript."]
+ "bgtd": {
+ "title": "264",
+ "intro": []
},
- "muyw": {
- "title": "266",
+ "ascd": {
+ "title": "265",
"intro": []
},
- "quiz-javascript-data-structures": {
- "title": "JavaScript Data Structures Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Data Structures."
- ]
+ "quiz-react-basics": {
+ "title": "React Basics Quiz",
+ "intro": ["Test what you've learned in this quiz on React Basics."]
+ },
+ "rugw": {
+ "title": "267",
+ "intro": []
},
"rmpy": {
"title": "268",
"intro": []
},
- "lab-depth-first-search": {
- "title": "Implement the Depth-First Search Algorithm",
- "intro": [
- "For this lab, you will use JavaScript to implement the Depth-First Search algorithm."
- ]
+ "dbta": {
+ "title": "269",
+ "intro": []
+ },
+ "rnfe": {
+ "title": "271",
+ "intro": []
},
"xdyh": {
"title": "270",
"intro": []
},
- "quiz-graphs-and-trees": {
- "title": "Graphs and Trees Quiz",
- "intro": ["Test what you've learned in this quiz on Graphs and Trees."]
- },
"vjgg": {
"title": "272",
"intro": []
},
- "lab-nth-fibonacci-number-generator": {
- "title": "Build the nth Fibonacci number generator",
- "intro": [
- "For this lab, you will implement the nth Fibonacci number generator."
- ]
- },
- "kaui": {
- "title": "274",
+ "ceds": {
+ "title": "273",
"intro": []
},
- "quiz-dynamic-programming": {
- "title": "Dynamic Programming Quiz",
+ "quiz-react-state-and-hooks": {
+ "title": "React State and Hooks Quiz",
"intro": [
- "Test what you've learned in this quiz on Dynamic Programming."
+ "Test what you've learned in this quiz on React State and Hooks."
]
},
+ "ftmi": {
+ "title": "275",
+ "intro": []
+ },
"sgau": {
"title": "276",
"intro": []
@@ -3318,53 +3333,65 @@
"title": "279",
"intro": []
},
- "lab-pokemon-search-app": {
- "title": "Build a Pokémon Search App",
- "intro": ["For this project, you will build a Pokémon search app."]
+ "lrof": {
+ "title": "280",
+ "intro": []
},
"vyzp": {
"title": "281",
"intro": []
},
- "icdr": {
- "title": "283",
+ "zagz": {
+ "title": "282",
"intro": []
},
+ "quiz-advanced-react": {
+ "title": "Advanced React Quiz",
+ "intro": ["Test what you've learned in this quiz on Advanced React."]
+ },
"zdsj": {
"title": "284",
"intro": []
},
- "mzae": {
- "title": "285",
- "intro": []
+ "review-web-performance": {
+ "title": "Web Performance Review",
+ "intro": [
+ "Review the Web Performance concepts to prepare for the upcoming quiz."
+ ]
},
- "gjbf": {
- "title": "286",
- "intro": []
+ "quiz-web-performance": {
+ "title": "Web Performance Quiz",
+ "intro": ["Test what you've learned in this quiz on Web Performance."]
},
"mbpv": {
"title": "287",
"intro": []
},
- "eeez": {
- "title": "288",
- "intro": []
+ "review-css-libraries-and-frameworks": {
+ "title": "CSS Libraries and Frameworks Review",
+ "intro": [
+ "Review the CSS Libraries and Frameworks concepts to prepare for the upcoming quiz."
+ ]
},
- "quiz-web-standards": {
- "title": "Web Standards Quiz",
- "intro": ["Test what you've learned in this quiz on Web Standards."]
+ "quiz-css-libraries-and-frameworks": {
+ "title": "CSS Libraries and Frameworks Quiz",
+ "intro": [
+ "Test what you've learned in this quiz on CSS Libraries and Frameworks."
+ ]
},
"khuu": {
"title": "290",
"intro": []
},
- "xdly": {
- "title": "291",
- "intro": []
+ "review-testing": {
+ "title": "Testing Review",
+ "intro": [
+ "Review the Testing concepts to prepare for the upcoming quiz."
+ ]
},
- "rhhl": {
- "title": "292",
- "intro": []
+ "quiz-testing": {
+ "title": "Testing Quiz",
+ "intro": ["Test what you've learned in this quiz on Testing."]
},
"trvf": {
"title": "293",
@@ -3382,104 +3409,8 @@
"title": "296",
"intro": []
},
- "quiz-react-basics": {
- "title": "React Basics Quiz",
- "intro": ["Test what you've learned in this quiz on React Basics."]
- },
- "hfwi": {
- "title": "298",
- "intro": []
- },
- "rnwr": {
- "title": "299",
- "intro": []
- },
- "oeqv": {
- "title": "300",
- "intro": []
- },
- "rdzk": {
- "title": "301",
- "intro": []
- },
- "vtpz": {
- "title": "302",
- "intro": []
- },
- "dfwl": {
- "title": "303",
- "intro": []
- },
- "adzm": {
- "title": "304",
- "intro": []
- },
- "quiz-react-state-and-hooks": {
- "title": "React State and Hooks Quiz",
- "intro": [
- "Test what you've learned in this quiz on React State and Hooks."
- ]
- },
- "voks": {
- "title": "306",
- "intro": []
- },
- "uwum": {
- "title": "307",
- "intro": []
- },
- "ukem": {
- "title": "308",
- "intro": []
- },
- "sdjg": {
- "title": "309",
- "intro": []
- },
- "buzx": {
- "title": "310",
- "intro": []
- },
- "pexz": {
- "title": "311",
- "intro": []
- },
- "prlo": {
- "title": "312",
- "intro": []
- },
- "jsnd": {
- "title": "313",
- "intro": []
- },
- "quiz-advanced-react": {
- "title": "Advanced React Quiz",
- "intro": ["Test what you've learned in this quiz on Advanced React."]
- },
- "tkgg": {
- "title": "315",
- "intro": []
- },
- "review-web-performance": {
- "title": "Web Performance Review",
- "intro": [
- "Review the Web Performance concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-web-performance": {
- "title": "Web Performance Quiz",
- "intro": ["Test what you've learned in this quiz on Web Performance."]
- },
- "hzab": {
- "title": "318",
- "intro": []
- },
- "ggea": {
- "title": "319",
- "intro": []
- },
- "vgvz": {
- "title": "320",
+ "muyw": {
+ "title": "297",
"intro": []
},
"review-typescript": {
@@ -3492,48 +3423,18 @@
"title": "TypeScript Quiz",
"intro": ["Test what you've learned in this quiz on TypeScript."]
},
- "zhhp": {
- "title": "323",
- "intro": []
- },
- "review-css-libraries-and-frameworks": {
- "title": "CSS Libraries and Frameworks Review",
- "intro": [
- "Review the CSS Libraries and Frameworks concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-css-libraries-and-frameworks": {
- "title": "CSS Libraries and Frameworks Quiz",
- "intro": [
- "Test what you've learned in this quiz on CSS Libraries and Frameworks."
- ]
- },
- "gora": {
- "title": "326",
- "intro": []
- },
- "review-testing": {
- "title": "Testing Review",
- "intro": [
- "Review the Testing concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-testing": {
- "title": "Testing Quiz",
- "intro": ["Test what you've learned in this quiz on Testing."]
- },
"review-front-end-libraries": {
"title": "Front End Libraries Review",
"intro": [
"Review the Front End Libraries concepts to prepare for the upcoming quiz."
]
},
- "mfwu": {
- "title": "330",
+ "rdzk": {
+ "title": "301",
"intro": []
},
- "dfcd": {
- "title": "331",
+ "vtpz": {
+ "title": "302",
"intro": []
},
"workshop-bash-boilerplate": {
@@ -3553,8 +3454,8 @@
"title": "Bash Commands Quiz",
"intro": ["Test what you've learned in this quiz on Bash Commands."]
},
- "thsj": {
- "title": "335",
+ "voks": {
+ "title": "306",
"intro": []
},
"workshop-mario-database": {
@@ -3582,8 +3483,8 @@
"Test what you've learned in this quiz on Relational Databases."
]
},
- "ynqt": {
- "title": "340",
+ "pexz": {
+ "title": "311",
"intro": []
},
"workshop-bash-five-programs": {
@@ -3603,8 +3504,8 @@
"title": "Bash Scripting Quiz",
"intro": ["Test what you've learned in this quiz on Bash Scripting."]
},
- "pegc": {
- "title": "344",
+ "tkgg": {
+ "title": "315",
"intro": []
},
"workshop-sql-student-database-part-1": {
@@ -3656,8 +3557,8 @@
"title": "Bash and SQL Quiz",
"intro": ["Test what you've learned in this quiz on Bash and SQL."]
},
- "movb": {
- "title": "353",
+ "eeez": {
+ "title": "324",
"intro": []
},
"workshop-castle": {
@@ -3675,8 +3576,8 @@
"title": "Nano Quiz",
"intro": ["Test what you've learned in this quiz on Nano."]
},
- "pzmc": {
- "title": "357",
+ "rhhl": {
+ "title": "328",
"intro": []
},
"workshop-sql-reference-object": {
@@ -3712,6 +3613,122 @@
"Review the Relational Databases concepts to prepare for the upcoming quiz."
]
},
+ "thsj": {
+ "title": "335",
+ "intro": []
+ },
+ "uwum": {
+ "title": "336",
+ "intro": []
+ },
+ "asfv": {
+ "title": "337",
+ "intro": []
+ },
+ "bvfx": {
+ "title": "338",
+ "intro": []
+ },
+ "buzx": {
+ "title": "339",
+ "intro": []
+ },
+ "ynqt": {
+ "title": "340",
+ "intro": []
+ },
+ "prlo": {
+ "title": "341",
+ "intro": []
+ },
+ "jsnd": {
+ "title": "342",
+ "intro": []
+ },
+ "sxdc": {
+ "title": "343",
+ "intro": []
+ },
+ "pegc": {
+ "title": "344",
+ "intro": []
+ },
+ "mzae": {
+ "title": "345",
+ "intro": []
+ },
+ "gjbf": {
+ "title": "346",
+ "intro": []
+ },
+ "hzab": {
+ "title": "347",
+ "intro": []
+ },
+ "ggea": {
+ "title": "348",
+ "intro": []
+ },
+ "vgvz": {
+ "title": "349",
+ "intro": []
+ },
+ "hfwi": {
+ "title": "350",
+ "intro": []
+ },
+ "rnwr": {
+ "title": "351",
+ "intro": []
+ },
+ "zhhp": {
+ "title": "352",
+ "intro": []
+ },
+ "movb": {
+ "title": "353",
+ "intro": []
+ },
+ "ngor": {
+ "title": "354",
+ "intro": []
+ },
+ "gora": {
+ "title": "355",
+ "intro": []
+ },
+ "xdly": {
+ "title": "356",
+ "intro": []
+ },
+ "pzmc": {
+ "title": "357",
+ "intro": []
+ },
+ "oeqv": {
+ "title": "358",
+ "intro": []
+ },
+ "mfwu": {
+ "title": "359",
+ "intro": []
+ },
+ "dfcd": {
+ "title": "360",
+ "intro": []
+ },
+ "dfwl": {
+ "title": "361",
+ "intro": []
+ },
+ "adzm": {
+ "title": "362",
+ "intro": []
+ },
+ "kaui": {
+ "title": "363",
+ "intro": []
+ },
"zpjj": {
"title": "364",
"intro": []
@@ -3720,17 +3737,13 @@
"title": "365",
"intro": []
},
- "review-security-and-privacy": {
- "title": "Security and Privacy Review",
- "intro": [
- "Review the Security and Privacy concepts to prepare for the upcoming quiz."
- ]
+ "ukem": {
+ "title": "366",
+ "intro": []
},
- "quiz-security-and-privacy": {
- "title": "Security and Privacy Quiz",
- "intro": [
- "Test what you've learned in this quiz on Security and Privacy."
- ]
+ "sdjg": {
+ "title": "367",
+ "intro": []
},
"qjov": {
"title": "368",
@@ -3760,6 +3773,10 @@
"title": "382",
"intro": []
},
+ "xfrd": {
+ "title": "383",
+ "intro": []
+ },
"nkjt": {
"title": "384",
"intro": []
diff --git a/client/i18n/locales/italian/translations.json b/client/i18n/locales/italian/translations.json
index 08e559b1737fb9..0a08acf5abd5b3 100644
--- a/client/i18n/locales/italian/translations.json
+++ b/client/i18n/locales/italian/translations.json
@@ -852,7 +852,7 @@
"expired-link": "Sembra che il link che hai cliccato sia scaduto, ti preghiamo di richiedere un nuovo link per accedere",
"signin-success": "Successo! Hai effettuato l'accesso al tuo account. Happy Coding!",
"social-auth-gone": "Ci stiamo allontanando dall'autenticazione social per motivi di privacy. La prossima volta ti consigliamo di utilizzare il tuo indirizzo email: {{email}} per accedere.",
- "name-needed": "Abbiamo bisogno del tuo nome per poterlo mettere sulla tua certificazione. Aggiungi il tuo nome alle impostazioni del tuo account e fai clic sul pulsante Salva. A quel punto potremo rilasciare la certificazione.",
+ "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.",
"incomplete-steps": "Sembra che tu non abbia completato i passaggi necessari. Per favore completa i progetti richiesti per richiedere la Certificazione {{name}}.",
"already-claimed": "Sembra che tu abbia già richiesto la Certificazione {{name}}",
"cert-claim-success": "@{{username}}, hai richiesto con successo la Certificazione {{name}} ! Congratulazioni per conto del team freeCodeCamp.org!",
diff --git a/client/i18n/locales/japanese/intro.json b/client/i18n/locales/japanese/intro.json
index eeccc7d6b794c7..62906463a5446a 100644
--- a/client/i18n/locales/japanese/intro.json
+++ b/client/i18n/locales/japanese/intro.json
@@ -1709,9 +1709,11 @@
"By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer."
],
"blocks": {
- "efpl": {
- "title": "0",
- "intro": []
+ "lecture-welcome-to-freecodecamp": {
+ "title": "Welcome to freeCodeCamp",
+ "intro": [
+ "Watch these videos to learn what freeCodeCamp is, and how millions of people have learned to code and gotten developer jobs using it."
+ ]
},
"lecture-what-is-html": {
"title": "What is HTML?",
@@ -2262,7 +2264,8 @@
"review-css-accessibility": {
"title": "CSS Accessibility Review",
"intro": [
- "Review the CSS Accessibility concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on CSS and accessibility, you first need to review.",
+ "Open up this page to review concepts like color contrast tools and accessibility best practices."
]
},
"quiz-css-accessibility": {
@@ -2425,7 +2428,8 @@
"review-css-grid": {
"title": "CSS Grid Review",
"intro": [
- "Review the CSS Grid concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on the fundamentals of CSS Grid, you first need to review.",
+ "Open up this page to review how to work with the different CSS Grid properties like grid-template-columns, grid-gap and more."
]
},
"quiz-css-grid": {
@@ -2438,9 +2442,12 @@
"In these lecture videos, you will learn about animations and accessibility."
]
},
- "dpaq": {
- "title": "120",
- "intro": []
+ "workshop-ferris-wheel": {
+ "title": "Build an Animated Ferris Wheel",
+ "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."
+ ]
},
"lab-moon-orbit": {
"title": "Build a Moon Orbit",
@@ -2464,7 +2471,8 @@
"review-css-animations": {
"title": "CSS Animations Review",
"intro": [
- "Review the CSS Animations concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on working with CSS animations, you first need to review.",
+ "Open up this page to review concepts including prefers-reduced-motion, the @keyframes rule and more."
]
},
"quiz-css-animations": {
@@ -2475,7 +2483,10 @@
},
"review-css": {
"title": "CSS Review",
- "intro": ["Review the CSS concepts to prepare for the upcoming exam."]
+ "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."
+ ]
},
"wvjx": {
"title": "127",
@@ -2515,7 +2526,8 @@
"review-javascript-variables-and-data-types": {
"title": "JavaScript Variables and Data Types Review",
"intro": [
- "Review the JavaScript Variables and Data Types concepts to prepare for the upcoming quiz."
+ "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."
]
},
"quiz-javascript-variables-and-data-types": {
@@ -2546,7 +2558,8 @@
"review-javascript-strings": {
"title": "JavaScript Strings Review",
"intro": [
- "Review the JavaScript Strings concepts to prepare for the upcoming quiz."
+ "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."
]
},
"quiz-javascript-strings": {
@@ -2647,7 +2660,8 @@
"review-javascript-functions": {
"title": "JavaScript Functions Review",
"intro": [
- "Review the JavaScript Functions concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on JavaScript functions, HTML, you first need to review the concepts.",
+ "Open up this page to review functions, arrow functions and scope."
]
},
"quiz-javascript-functions": {
@@ -2656,9 +2670,11 @@
"Test what you've learned in this quiz on JavaScript Functions."
]
},
- "mexq": {
- "title": "157",
- "intro": []
+ "lecture-working-with-arrays": {
+ "title": "Working with Arrays",
+ "intro": [
+ "In these lecture videos, you will learn about working with JavaScript arrays."
+ ]
},
"workshop-shopping-list": {
"title": "Build a Shopping List",
@@ -2673,9 +2689,11 @@
"In this lab, you will review working with arrays and random numbers by building a lunch picker program."
]
},
- "mokm": {
- "title": "160",
- "intro": []
+ "lecture-working-with-common-array-methods": {
+ "title": "Working with Common Array Methods",
+ "intro": [
+ "In these lecture videos, you will learn about common array methods."
+ ]
},
"review-javascript-arrays": {
"title": "JavaScript Arrays Review",
@@ -2687,9 +2705,11 @@
"title": "JavaScript Arrays Quiz",
"intro": ["Test what you've learned in this quiz on JavaScript Arrays."]
},
- "dvnt": {
- "title": "163",
- "intro": []
+ "lecture-working-with-objects": {
+ "title": "Working with Objects",
+ "intro": [
+ "In these lecture videos, you will learn about working with objects in JavaScript."
+ ]
},
"workshop-recipe-tracker": {
"title": "Build a Recipe Tracker",
@@ -2713,9 +2733,11 @@
"Test what you've learned in this quiz on JavaScript Objects."
]
},
- "kgtw": {
- "title": "168",
- "intro": []
+ "lecture-working-with-loops": {
+ "title": "Working with Loops",
+ "intro": [
+ "In these lecture videos, you will learn about working with loops in JavaScript."
+ ]
},
"workshop-sentence-analyzer": {
"title": "Build a Sentence Analyzer",
@@ -2737,9 +2759,11 @@
"title": "JavaScript Loops Quiz",
"intro": ["Test what you've learned in this quiz on JavaScript Loops."]
},
- "hjtr": {
- "title": "173",
- "intro": []
+ "lecture-understanding-core-javascript-fundamentals": {
+ "title": "Understanding Core JavaScript Fundamentals",
+ "intro": [
+ "In these lecture videos, you will learn more about core JavaScript fundamentals."
+ ]
},
"lab-pyramid-generator": {
"title": "Build a Pyramid Generator",
@@ -2749,9 +2773,11 @@
"title": "Build a Gradebook App",
"intro": ["For this lab, you will create a gradebook app."]
},
- "epfc": {
- "title": "176",
- "intro": []
+ "lecture-the-var-keyword-and-hoisting": {
+ "title": "The var Keyword and Hoisting",
+ "intro": [
+ "In these lecture videos, you will learn about the var keyword and hoisting in JavaScript."
+ ]
},
"lab-inventory-management-program": {
"title": "Build an Inventory Management Program",
@@ -2759,9 +2785,11 @@
"For this lab, you will build an inventory management program using JavaScript."
]
},
- "fbbn": {
- "title": "178",
- "intro": []
+ "lecture-understanding-modules-imports-and-exports": {
+ "title": "Understanding Modules, Imports, and Exports",
+ "intro": [
+ "In these lecture videos, you will learn about modules, imports, and exports in JavaScript."
+ ]
},
"lnmg": {
"title": "179",
@@ -2779,13 +2807,17 @@
"Test what you've learned in this quiz on JavaScript Fundamentals Quiz."
]
},
- "plic": {
- "title": "182",
- "intro": []
+ "lecture-working-with-higher-order-functions-and-callbacks": {
+ "title": "Working with Higher Order Functions and Callbacks",
+ "intro": [
+ "In these lecture videos, you will learn about working with higher order functions and callbacks."
+ ]
},
- "vjmm": {
- "title": "183",
- "intro": []
+ "workshop-library-manager": {
+ "title": "Build a Library Manager",
+ "intro": [
+ "In this workshop, you will learn higher order array methods by building a library manager"
+ ]
},
"bxtv": {
"title": "184",
@@ -2803,14 +2835,22 @@
"Test what you've learned in this quiz on JavaScript Higher Order Functions."
]
},
- "esfh": {
- "title": "187",
- "intro": []
+ "lecture-working-with-the-dom-click-events-and-web-apis": {
+ "title": "Working with the DOM, Click Events, and Web APIs",
+ "intro": [
+ "In these lecture videos, you will learn how to work with the DOM, click events, and web APIs, using Javascript."
+ ]
},
"gibb": {
"title": "188",
"intro": []
},
+ "workshop-storytelling-app": {
+ "title": "Build a Storytelling App",
+ "intro": [
+ "In this workshop, you will build a storytelling app that will allow you to list different stories based on genre."
+ ]
+ },
"lab-favorite-icon-toggler": {
"title": "Build a Favorite Icon Toggler",
"intro": [
@@ -2829,13 +2869,17 @@
"Test what you've learned in this quiz on DOM Manipulation and Click Events with JavaScript Quiz."
]
},
- "ubpx": {
- "title": "192",
- "intro": []
+ "lecture-understanding-the-event-object-and-event-delegation": {
+ "title": "Understanding the Event Object and Event Delegation",
+ "intro": [
+ "In these lecture videos, you will learn about the event object and event delegation."
+ ]
},
- "lbyi": {
- "title": "193",
- "intro": []
+ "workshop-music-instrument-filter": {
+ "title": "Build a Music Instrument Filter",
+ "intro": [
+ "In this workshop, you will build a music instrument filter with JavaScript."
+ ]
},
"lab-real-time-counter": {
"title": "Build a Real Time Counter",
@@ -2901,9 +2945,12 @@
"title": "205",
"intro": []
},
- "dqth": {
- "title": "206",
- "intro": []
+ "workshop-spam-filter": {
+ "title": "Build a Spam Filter",
+ "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."
+ ]
},
"lab-markdown-to-html-converter": {
"title": "Build a Markdown to HTML Converter",
@@ -3051,9 +3098,12 @@
"title": "235",
"intro": []
},
- "peyf": {
- "title": "236",
- "intro": []
+ "workshop-shopping-cart": {
+ "title": "Build a Shopping Cart",
+ "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."
+ ]
},
"lab-project-idea-board": {
"title": "Build a Project Idea Board",
@@ -3119,50 +3169,29 @@
"Test what you've learned in this quiz on JavaScript Functional Programming."
]
},
- "lab-quicksort-algorithm": {
- "title": "Build the Quicksort Algorithm",
- "intro": [
- "For this lab, you will implement the Quicksort algorithm using JavaScript."
- ]
- },
"dtfv": {
"title": "240",
"intro": []
},
- "quiz-searching-and-sorting-algorithms": {
- "title": "Searching and Sorting Algorithms Quiz",
- "intro": [
- "Test what you've learned in this quiz on Searching and Sorting Algorithms."
- ]
- },
"bnvw": {
- "title": "242",
+ "title": "241",
"intro": []
},
+ "workshop-decimal-to-binary-converter": {
+ "title": "Build a Decimal to Binary Converter",
+ "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."
+ ]
+ },
"xkhk": {
"title": "243",
"intro": []
},
- "lab-roman-numeral-converter": {
- "title": "Build a Roman Numeral Converter",
- "intro": [
- "For this lab, you'll build an application that converts integers to Roman numerals."
- ]
- },
"yaxm": {
"title": "245",
"intro": []
},
- "lab-telephone-number-validator": {
- "title": "Build a Telephone Number Validator",
- "intro": [
- "For this lab, you'll build an application that checks if a number is a valid United States phone number."
- ]
- },
- "lab-cash-register": {
- "title": "Build a Cash Register",
- "intro": ["For this lab, you will build a cash register."]
- },
"udia": {
"title": "248",
"intro": []
@@ -3173,12 +3202,6 @@
"Review the JavaScript Functional Programming concepts to prepare for the upcoming quiz."
]
},
- "quiz-javascript-problem-solving-and-algorithmic-thinking": {
- "title": "JavaScript Problem Solving and Algorithmic Thinking Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Problem Solving and Algorithmic Thinking."
- ]
- },
"mjbe": {
"title": "251",
"intro": []
@@ -3220,88 +3243,80 @@
"title": "258",
"intro": []
},
- "mbib": {
- "title": "259",
- "intro": []
+ "lecture-introduction-to-javascript-libraries-and-frameworks": {
+ "title": "Introduction to JavaScript Libraries and Frameworks",
+ "intro": [
+ "In these lecture videos, you will get an introduction to JavaScript libraries and frameworks."
+ ]
},
"oxiv": {
"title": "260",
"intro": []
},
- "quiz-javascript-object-oriented-programming": {
- "title": "JavaScript Object Oriented Programming Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Object Oriented Programming."
- ]
- },
- "nixz": {
- "title": "262",
+ "fjvx": {
+ "title": "261",
"intro": []
},
- "lab-stack-class": {
- "title": "Build a Stack Class",
+ "lecture-working-with-data-in-react": {
+ "title": "Working with Data in React",
"intro": [
- "For this lab, you will build a stack class using JavaScript."
+ "In these lecture videos, you will learn about working with data in React."
]
},
- "lab-linked-list-class": {
- "title": "Build a Linked List Class",
- "intro": [
- "For this lab, you will build a linked list class using JavaScript."
- ]
+ "cdfr": {
+ "title": "263",
+ "intro": []
},
- "lab-hash-table-class": {
- "title": "Build a Hash Table Class",
- "intro": ["For this lab, you will build a hash table using JavaScript."]
+ "bgtd": {
+ "title": "264",
+ "intro": []
},
- "muyw": {
- "title": "266",
+ "ascd": {
+ "title": "265",
"intro": []
},
- "quiz-javascript-data-structures": {
- "title": "JavaScript Data Structures Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Data Structures."
- ]
+ "quiz-react-basics": {
+ "title": "React Basics Quiz",
+ "intro": ["Test what you've learned in this quiz on React Basics."]
+ },
+ "rugw": {
+ "title": "267",
+ "intro": []
},
"rmpy": {
"title": "268",
"intro": []
},
- "lab-depth-first-search": {
- "title": "Implement the Depth-First Search Algorithm",
- "intro": [
- "For this lab, you will use JavaScript to implement the Depth-First Search algorithm."
- ]
+ "dbta": {
+ "title": "269",
+ "intro": []
+ },
+ "rnfe": {
+ "title": "271",
+ "intro": []
},
"xdyh": {
"title": "270",
"intro": []
},
- "quiz-graphs-and-trees": {
- "title": "Graphs and Trees Quiz",
- "intro": ["Test what you've learned in this quiz on Graphs and Trees."]
- },
"vjgg": {
"title": "272",
"intro": []
},
- "lab-nth-fibonacci-number-generator": {
- "title": "Build the nth Fibonacci number generator",
- "intro": [
- "For this lab, you will implement the nth Fibonacci number generator."
- ]
- },
- "kaui": {
- "title": "274",
+ "ceds": {
+ "title": "273",
"intro": []
},
- "quiz-dynamic-programming": {
- "title": "Dynamic Programming Quiz",
+ "quiz-react-state-and-hooks": {
+ "title": "React State and Hooks Quiz",
"intro": [
- "Test what you've learned in this quiz on Dynamic Programming."
+ "Test what you've learned in this quiz on React State and Hooks."
]
},
+ "ftmi": {
+ "title": "275",
+ "intro": []
+ },
"sgau": {
"title": "276",
"intro": []
@@ -3318,53 +3333,65 @@
"title": "279",
"intro": []
},
- "lab-pokemon-search-app": {
- "title": "Build a Pokémon Search App",
- "intro": ["For this project, you will build a Pokémon search app."]
+ "lrof": {
+ "title": "280",
+ "intro": []
},
"vyzp": {
"title": "281",
"intro": []
},
- "icdr": {
- "title": "283",
+ "zagz": {
+ "title": "282",
"intro": []
},
+ "quiz-advanced-react": {
+ "title": "Advanced React Quiz",
+ "intro": ["Test what you've learned in this quiz on Advanced React."]
+ },
"zdsj": {
"title": "284",
"intro": []
},
- "mzae": {
- "title": "285",
- "intro": []
+ "review-web-performance": {
+ "title": "Web Performance Review",
+ "intro": [
+ "Review the Web Performance concepts to prepare for the upcoming quiz."
+ ]
},
- "gjbf": {
- "title": "286",
- "intro": []
+ "quiz-web-performance": {
+ "title": "Web Performance Quiz",
+ "intro": ["Test what you've learned in this quiz on Web Performance."]
},
"mbpv": {
"title": "287",
"intro": []
},
- "eeez": {
- "title": "288",
- "intro": []
+ "review-css-libraries-and-frameworks": {
+ "title": "CSS Libraries and Frameworks Review",
+ "intro": [
+ "Review the CSS Libraries and Frameworks concepts to prepare for the upcoming quiz."
+ ]
},
- "quiz-web-standards": {
- "title": "Web Standards Quiz",
- "intro": ["Test what you've learned in this quiz on Web Standards."]
+ "quiz-css-libraries-and-frameworks": {
+ "title": "CSS Libraries and Frameworks Quiz",
+ "intro": [
+ "Test what you've learned in this quiz on CSS Libraries and Frameworks."
+ ]
},
"khuu": {
"title": "290",
"intro": []
},
- "xdly": {
- "title": "291",
- "intro": []
+ "review-testing": {
+ "title": "Testing Review",
+ "intro": [
+ "Review the Testing concepts to prepare for the upcoming quiz."
+ ]
},
- "rhhl": {
- "title": "292",
- "intro": []
+ "quiz-testing": {
+ "title": "Testing Quiz",
+ "intro": ["Test what you've learned in this quiz on Testing."]
},
"trvf": {
"title": "293",
@@ -3382,104 +3409,8 @@
"title": "296",
"intro": []
},
- "quiz-react-basics": {
- "title": "React Basics Quiz",
- "intro": ["Test what you've learned in this quiz on React Basics."]
- },
- "hfwi": {
- "title": "298",
- "intro": []
- },
- "rnwr": {
- "title": "299",
- "intro": []
- },
- "oeqv": {
- "title": "300",
- "intro": []
- },
- "rdzk": {
- "title": "301",
- "intro": []
- },
- "vtpz": {
- "title": "302",
- "intro": []
- },
- "dfwl": {
- "title": "303",
- "intro": []
- },
- "adzm": {
- "title": "304",
- "intro": []
- },
- "quiz-react-state-and-hooks": {
- "title": "React State and Hooks Quiz",
- "intro": [
- "Test what you've learned in this quiz on React State and Hooks."
- ]
- },
- "voks": {
- "title": "306",
- "intro": []
- },
- "uwum": {
- "title": "307",
- "intro": []
- },
- "ukem": {
- "title": "308",
- "intro": []
- },
- "sdjg": {
- "title": "309",
- "intro": []
- },
- "buzx": {
- "title": "310",
- "intro": []
- },
- "pexz": {
- "title": "311",
- "intro": []
- },
- "prlo": {
- "title": "312",
- "intro": []
- },
- "jsnd": {
- "title": "313",
- "intro": []
- },
- "quiz-advanced-react": {
- "title": "Advanced React Quiz",
- "intro": ["Test what you've learned in this quiz on Advanced React."]
- },
- "tkgg": {
- "title": "315",
- "intro": []
- },
- "review-web-performance": {
- "title": "Web Performance Review",
- "intro": [
- "Review the Web Performance concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-web-performance": {
- "title": "Web Performance Quiz",
- "intro": ["Test what you've learned in this quiz on Web Performance."]
- },
- "hzab": {
- "title": "318",
- "intro": []
- },
- "ggea": {
- "title": "319",
- "intro": []
- },
- "vgvz": {
- "title": "320",
+ "muyw": {
+ "title": "297",
"intro": []
},
"review-typescript": {
@@ -3492,48 +3423,18 @@
"title": "TypeScript Quiz",
"intro": ["Test what you've learned in this quiz on TypeScript."]
},
- "zhhp": {
- "title": "323",
- "intro": []
- },
- "review-css-libraries-and-frameworks": {
- "title": "CSS Libraries and Frameworks Review",
- "intro": [
- "Review the CSS Libraries and Frameworks concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-css-libraries-and-frameworks": {
- "title": "CSS Libraries and Frameworks Quiz",
- "intro": [
- "Test what you've learned in this quiz on CSS Libraries and Frameworks."
- ]
- },
- "gora": {
- "title": "326",
- "intro": []
- },
- "review-testing": {
- "title": "Testing Review",
- "intro": [
- "Review the Testing concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-testing": {
- "title": "Testing Quiz",
- "intro": ["Test what you've learned in this quiz on Testing."]
- },
"review-front-end-libraries": {
"title": "Front End Libraries Review",
"intro": [
"Review the Front End Libraries concepts to prepare for the upcoming quiz."
]
},
- "mfwu": {
- "title": "330",
+ "rdzk": {
+ "title": "301",
"intro": []
},
- "dfcd": {
- "title": "331",
+ "vtpz": {
+ "title": "302",
"intro": []
},
"workshop-bash-boilerplate": {
@@ -3553,8 +3454,8 @@
"title": "Bash Commands Quiz",
"intro": ["Test what you've learned in this quiz on Bash Commands."]
},
- "thsj": {
- "title": "335",
+ "voks": {
+ "title": "306",
"intro": []
},
"workshop-mario-database": {
@@ -3582,8 +3483,8 @@
"Test what you've learned in this quiz on Relational Databases."
]
},
- "ynqt": {
- "title": "340",
+ "pexz": {
+ "title": "311",
"intro": []
},
"workshop-bash-five-programs": {
@@ -3603,8 +3504,8 @@
"title": "Bash Scripting Quiz",
"intro": ["Test what you've learned in this quiz on Bash Scripting."]
},
- "pegc": {
- "title": "344",
+ "tkgg": {
+ "title": "315",
"intro": []
},
"workshop-sql-student-database-part-1": {
@@ -3656,8 +3557,8 @@
"title": "Bash and SQL Quiz",
"intro": ["Test what you've learned in this quiz on Bash and SQL."]
},
- "movb": {
- "title": "353",
+ "eeez": {
+ "title": "324",
"intro": []
},
"workshop-castle": {
@@ -3675,8 +3576,8 @@
"title": "Nano Quiz",
"intro": ["Test what you've learned in this quiz on Nano."]
},
- "pzmc": {
- "title": "357",
+ "rhhl": {
+ "title": "328",
"intro": []
},
"workshop-sql-reference-object": {
@@ -3712,6 +3613,122 @@
"Review the Relational Databases concepts to prepare for the upcoming quiz."
]
},
+ "thsj": {
+ "title": "335",
+ "intro": []
+ },
+ "uwum": {
+ "title": "336",
+ "intro": []
+ },
+ "asfv": {
+ "title": "337",
+ "intro": []
+ },
+ "bvfx": {
+ "title": "338",
+ "intro": []
+ },
+ "buzx": {
+ "title": "339",
+ "intro": []
+ },
+ "ynqt": {
+ "title": "340",
+ "intro": []
+ },
+ "prlo": {
+ "title": "341",
+ "intro": []
+ },
+ "jsnd": {
+ "title": "342",
+ "intro": []
+ },
+ "sxdc": {
+ "title": "343",
+ "intro": []
+ },
+ "pegc": {
+ "title": "344",
+ "intro": []
+ },
+ "mzae": {
+ "title": "345",
+ "intro": []
+ },
+ "gjbf": {
+ "title": "346",
+ "intro": []
+ },
+ "hzab": {
+ "title": "347",
+ "intro": []
+ },
+ "ggea": {
+ "title": "348",
+ "intro": []
+ },
+ "vgvz": {
+ "title": "349",
+ "intro": []
+ },
+ "hfwi": {
+ "title": "350",
+ "intro": []
+ },
+ "rnwr": {
+ "title": "351",
+ "intro": []
+ },
+ "zhhp": {
+ "title": "352",
+ "intro": []
+ },
+ "movb": {
+ "title": "353",
+ "intro": []
+ },
+ "ngor": {
+ "title": "354",
+ "intro": []
+ },
+ "gora": {
+ "title": "355",
+ "intro": []
+ },
+ "xdly": {
+ "title": "356",
+ "intro": []
+ },
+ "pzmc": {
+ "title": "357",
+ "intro": []
+ },
+ "oeqv": {
+ "title": "358",
+ "intro": []
+ },
+ "mfwu": {
+ "title": "359",
+ "intro": []
+ },
+ "dfcd": {
+ "title": "360",
+ "intro": []
+ },
+ "dfwl": {
+ "title": "361",
+ "intro": []
+ },
+ "adzm": {
+ "title": "362",
+ "intro": []
+ },
+ "kaui": {
+ "title": "363",
+ "intro": []
+ },
"zpjj": {
"title": "364",
"intro": []
@@ -3720,17 +3737,13 @@
"title": "365",
"intro": []
},
- "review-security-and-privacy": {
- "title": "Security and Privacy Review",
- "intro": [
- "Review the Security and Privacy concepts to prepare for the upcoming quiz."
- ]
+ "ukem": {
+ "title": "366",
+ "intro": []
},
- "quiz-security-and-privacy": {
- "title": "Security and Privacy Quiz",
- "intro": [
- "Test what you've learned in this quiz on Security and Privacy."
- ]
+ "sdjg": {
+ "title": "367",
+ "intro": []
},
"qjov": {
"title": "368",
@@ -3760,6 +3773,10 @@
"title": "382",
"intro": []
},
+ "xfrd": {
+ "title": "383",
+ "intro": []
+ },
"nkjt": {
"title": "384",
"intro": []
diff --git a/client/i18n/locales/japanese/translations.json b/client/i18n/locales/japanese/translations.json
index 4f1e0bedf60e58..815ba13e1e9b02 100644
--- a/client/i18n/locales/japanese/translations.json
+++ b/client/i18n/locales/japanese/translations.json
@@ -852,7 +852,7 @@
"expired-link": "クリックされたリンクは有効期限が切れているようです。サインインするには新しいリンクをリクエストしてください。",
"signin-success": "成功です!アカウントにサインインしました。コーディングを楽しみましょう!",
"social-auth-gone": "私たちはプライバシー上の理由のため、ソーシャル認証の使用中止を検討しています。次回は代わりにあなたのメールアドレス ({{email}}) を用いてサインインされることをお勧めします。",
- "name-needed": "認定証に記載するため、あなたの名前が必要です。アカウント設定に名前を追加し、保存ボタンをクリックしてください。その後、認定証を発行することができるようになります。",
+ "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.",
"incomplete-steps": "必要な過程が完了していないようです。{{name}} 認定証を獲得するために必修のプロジェクトを完成させてください。",
"already-claimed": "あなたはすでに {{name}} 認定証を獲得しているようです。",
"cert-claim-success": "@{{username}} さん、あなたは無事に {{name}} 認定証を獲得しました!freeCodeCamp.org チームを代表してお祝い申し上げます!",
diff --git a/client/i18n/locales/korean/intro.json b/client/i18n/locales/korean/intro.json
index 24c376eb36d1c1..b0e315074cf769 100644
--- a/client/i18n/locales/korean/intro.json
+++ b/client/i18n/locales/korean/intro.json
@@ -1709,9 +1709,11 @@
"By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer."
],
"blocks": {
- "efpl": {
- "title": "0",
- "intro": []
+ "lecture-welcome-to-freecodecamp": {
+ "title": "Welcome to freeCodeCamp",
+ "intro": [
+ "Watch these videos to learn what freeCodeCamp is, and how millions of people have learned to code and gotten developer jobs using it."
+ ]
},
"lecture-what-is-html": {
"title": "What is HTML?",
@@ -2262,7 +2264,8 @@
"review-css-accessibility": {
"title": "CSS Accessibility Review",
"intro": [
- "Review the CSS Accessibility concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on CSS and accessibility, you first need to review.",
+ "Open up this page to review concepts like color contrast tools and accessibility best practices."
]
},
"quiz-css-accessibility": {
@@ -2425,7 +2428,8 @@
"review-css-grid": {
"title": "CSS Grid Review",
"intro": [
- "Review the CSS Grid concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on the fundamentals of CSS Grid, you first need to review.",
+ "Open up this page to review how to work with the different CSS Grid properties like grid-template-columns, grid-gap and more."
]
},
"quiz-css-grid": {
@@ -2438,9 +2442,12 @@
"In these lecture videos, you will learn about animations and accessibility."
]
},
- "dpaq": {
- "title": "120",
- "intro": []
+ "workshop-ferris-wheel": {
+ "title": "Build an Animated Ferris Wheel",
+ "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."
+ ]
},
"lab-moon-orbit": {
"title": "Build a Moon Orbit",
@@ -2464,7 +2471,8 @@
"review-css-animations": {
"title": "CSS Animations Review",
"intro": [
- "Review the CSS Animations concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on working with CSS animations, you first need to review.",
+ "Open up this page to review concepts including prefers-reduced-motion, the @keyframes rule and more."
]
},
"quiz-css-animations": {
@@ -2475,7 +2483,10 @@
},
"review-css": {
"title": "CSS Review",
- "intro": ["Review the CSS concepts to prepare for the upcoming exam."]
+ "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."
+ ]
},
"wvjx": {
"title": "127",
@@ -2515,7 +2526,8 @@
"review-javascript-variables-and-data-types": {
"title": "JavaScript Variables and Data Types Review",
"intro": [
- "Review the JavaScript Variables and Data Types concepts to prepare for the upcoming quiz."
+ "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."
]
},
"quiz-javascript-variables-and-data-types": {
@@ -2546,7 +2558,8 @@
"review-javascript-strings": {
"title": "JavaScript Strings Review",
"intro": [
- "Review the JavaScript Strings concepts to prepare for the upcoming quiz."
+ "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."
]
},
"quiz-javascript-strings": {
@@ -2647,7 +2660,8 @@
"review-javascript-functions": {
"title": "JavaScript Functions Review",
"intro": [
- "Review the JavaScript Functions concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on JavaScript functions, HTML, you first need to review the concepts.",
+ "Open up this page to review functions, arrow functions and scope."
]
},
"quiz-javascript-functions": {
@@ -2656,9 +2670,11 @@
"Test what you've learned in this quiz on JavaScript Functions."
]
},
- "mexq": {
- "title": "157",
- "intro": []
+ "lecture-working-with-arrays": {
+ "title": "Working with Arrays",
+ "intro": [
+ "In these lecture videos, you will learn about working with JavaScript arrays."
+ ]
},
"workshop-shopping-list": {
"title": "Build a Shopping List",
@@ -2673,9 +2689,11 @@
"In this lab, you will review working with arrays and random numbers by building a lunch picker program."
]
},
- "mokm": {
- "title": "160",
- "intro": []
+ "lecture-working-with-common-array-methods": {
+ "title": "Working with Common Array Methods",
+ "intro": [
+ "In these lecture videos, you will learn about common array methods."
+ ]
},
"review-javascript-arrays": {
"title": "JavaScript Arrays Review",
@@ -2687,9 +2705,11 @@
"title": "JavaScript Arrays Quiz",
"intro": ["Test what you've learned in this quiz on JavaScript Arrays."]
},
- "dvnt": {
- "title": "163",
- "intro": []
+ "lecture-working-with-objects": {
+ "title": "Working with Objects",
+ "intro": [
+ "In these lecture videos, you will learn about working with objects in JavaScript."
+ ]
},
"workshop-recipe-tracker": {
"title": "Build a Recipe Tracker",
@@ -2713,9 +2733,11 @@
"Test what you've learned in this quiz on JavaScript Objects."
]
},
- "kgtw": {
- "title": "168",
- "intro": []
+ "lecture-working-with-loops": {
+ "title": "Working with Loops",
+ "intro": [
+ "In these lecture videos, you will learn about working with loops in JavaScript."
+ ]
},
"workshop-sentence-analyzer": {
"title": "Build a Sentence Analyzer",
@@ -2737,9 +2759,11 @@
"title": "JavaScript Loops Quiz",
"intro": ["Test what you've learned in this quiz on JavaScript Loops."]
},
- "hjtr": {
- "title": "173",
- "intro": []
+ "lecture-understanding-core-javascript-fundamentals": {
+ "title": "Understanding Core JavaScript Fundamentals",
+ "intro": [
+ "In these lecture videos, you will learn more about core JavaScript fundamentals."
+ ]
},
"lab-pyramid-generator": {
"title": "Build a Pyramid Generator",
@@ -2749,9 +2773,11 @@
"title": "Build a Gradebook App",
"intro": ["For this lab, you will create a gradebook app."]
},
- "epfc": {
- "title": "176",
- "intro": []
+ "lecture-the-var-keyword-and-hoisting": {
+ "title": "The var Keyword and Hoisting",
+ "intro": [
+ "In these lecture videos, you will learn about the var keyword and hoisting in JavaScript."
+ ]
},
"lab-inventory-management-program": {
"title": "Build an Inventory Management Program",
@@ -2759,9 +2785,11 @@
"For this lab, you will build an inventory management program using JavaScript."
]
},
- "fbbn": {
- "title": "178",
- "intro": []
+ "lecture-understanding-modules-imports-and-exports": {
+ "title": "Understanding Modules, Imports, and Exports",
+ "intro": [
+ "In these lecture videos, you will learn about modules, imports, and exports in JavaScript."
+ ]
},
"lnmg": {
"title": "179",
@@ -2779,13 +2807,17 @@
"Test what you've learned in this quiz on JavaScript Fundamentals Quiz."
]
},
- "plic": {
- "title": "182",
- "intro": []
+ "lecture-working-with-higher-order-functions-and-callbacks": {
+ "title": "Working with Higher Order Functions and Callbacks",
+ "intro": [
+ "In these lecture videos, you will learn about working with higher order functions and callbacks."
+ ]
},
- "vjmm": {
- "title": "183",
- "intro": []
+ "workshop-library-manager": {
+ "title": "Build a Library Manager",
+ "intro": [
+ "In this workshop, you will learn higher order array methods by building a library manager"
+ ]
},
"bxtv": {
"title": "184",
@@ -2803,14 +2835,22 @@
"Test what you've learned in this quiz on JavaScript Higher Order Functions."
]
},
- "esfh": {
- "title": "187",
- "intro": []
+ "lecture-working-with-the-dom-click-events-and-web-apis": {
+ "title": "Working with the DOM, Click Events, and Web APIs",
+ "intro": [
+ "In these lecture videos, you will learn how to work with the DOM, click events, and web APIs, using Javascript."
+ ]
},
"gibb": {
"title": "188",
"intro": []
},
+ "workshop-storytelling-app": {
+ "title": "Build a Storytelling App",
+ "intro": [
+ "In this workshop, you will build a storytelling app that will allow you to list different stories based on genre."
+ ]
+ },
"lab-favorite-icon-toggler": {
"title": "Build a Favorite Icon Toggler",
"intro": [
@@ -2829,13 +2869,17 @@
"Test what you've learned in this quiz on DOM Manipulation and Click Events with JavaScript Quiz."
]
},
- "ubpx": {
- "title": "192",
- "intro": []
+ "lecture-understanding-the-event-object-and-event-delegation": {
+ "title": "Understanding the Event Object and Event Delegation",
+ "intro": [
+ "In these lecture videos, you will learn about the event object and event delegation."
+ ]
},
- "lbyi": {
- "title": "193",
- "intro": []
+ "workshop-music-instrument-filter": {
+ "title": "Build a Music Instrument Filter",
+ "intro": [
+ "In this workshop, you will build a music instrument filter with JavaScript."
+ ]
},
"lab-real-time-counter": {
"title": "Build a Real Time Counter",
@@ -2901,9 +2945,12 @@
"title": "205",
"intro": []
},
- "dqth": {
- "title": "206",
- "intro": []
+ "workshop-spam-filter": {
+ "title": "Build a Spam Filter",
+ "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."
+ ]
},
"lab-markdown-to-html-converter": {
"title": "Build a Markdown to HTML Converter",
@@ -3051,9 +3098,12 @@
"title": "235",
"intro": []
},
- "peyf": {
- "title": "236",
- "intro": []
+ "workshop-shopping-cart": {
+ "title": "Build a Shopping Cart",
+ "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."
+ ]
},
"lab-project-idea-board": {
"title": "Build a Project Idea Board",
@@ -3119,50 +3169,29 @@
"Test what you've learned in this quiz on JavaScript Functional Programming."
]
},
- "lab-quicksort-algorithm": {
- "title": "Build the Quicksort Algorithm",
- "intro": [
- "For this lab, you will implement the Quicksort algorithm using JavaScript."
- ]
- },
"dtfv": {
"title": "240",
"intro": []
},
- "quiz-searching-and-sorting-algorithms": {
- "title": "Searching and Sorting Algorithms Quiz",
- "intro": [
- "Test what you've learned in this quiz on Searching and Sorting Algorithms."
- ]
- },
"bnvw": {
- "title": "242",
+ "title": "241",
"intro": []
},
+ "workshop-decimal-to-binary-converter": {
+ "title": "Build a Decimal to Binary Converter",
+ "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."
+ ]
+ },
"xkhk": {
"title": "243",
"intro": []
},
- "lab-roman-numeral-converter": {
- "title": "Build a Roman Numeral Converter",
- "intro": [
- "For this lab, you'll build an application that converts integers to Roman numerals."
- ]
- },
"yaxm": {
"title": "245",
"intro": []
},
- "lab-telephone-number-validator": {
- "title": "Build a Telephone Number Validator",
- "intro": [
- "For this lab, you'll build an application that checks if a number is a valid United States phone number."
- ]
- },
- "lab-cash-register": {
- "title": "Build a Cash Register",
- "intro": ["For this lab, you will build a cash register."]
- },
"udia": {
"title": "248",
"intro": []
@@ -3173,12 +3202,6 @@
"Review the JavaScript Functional Programming concepts to prepare for the upcoming quiz."
]
},
- "quiz-javascript-problem-solving-and-algorithmic-thinking": {
- "title": "JavaScript Problem Solving and Algorithmic Thinking Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Problem Solving and Algorithmic Thinking."
- ]
- },
"mjbe": {
"title": "251",
"intro": []
@@ -3220,88 +3243,80 @@
"title": "258",
"intro": []
},
- "mbib": {
- "title": "259",
- "intro": []
+ "lecture-introduction-to-javascript-libraries-and-frameworks": {
+ "title": "Introduction to JavaScript Libraries and Frameworks",
+ "intro": [
+ "In these lecture videos, you will get an introduction to JavaScript libraries and frameworks."
+ ]
},
"oxiv": {
"title": "260",
"intro": []
},
- "quiz-javascript-object-oriented-programming": {
- "title": "JavaScript Object Oriented Programming Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Object Oriented Programming."
- ]
- },
- "nixz": {
- "title": "262",
+ "fjvx": {
+ "title": "261",
"intro": []
},
- "lab-stack-class": {
- "title": "Build a Stack Class",
+ "lecture-working-with-data-in-react": {
+ "title": "Working with Data in React",
"intro": [
- "For this lab, you will build a stack class using JavaScript."
+ "In these lecture videos, you will learn about working with data in React."
]
},
- "lab-linked-list-class": {
- "title": "Build a Linked List Class",
- "intro": [
- "For this lab, you will build a linked list class using JavaScript."
- ]
+ "cdfr": {
+ "title": "263",
+ "intro": []
},
- "lab-hash-table-class": {
- "title": "Build a Hash Table Class",
- "intro": ["For this lab, you will build a hash table using JavaScript."]
+ "bgtd": {
+ "title": "264",
+ "intro": []
},
- "muyw": {
- "title": "266",
+ "ascd": {
+ "title": "265",
"intro": []
},
- "quiz-javascript-data-structures": {
- "title": "JavaScript Data Structures Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Data Structures."
- ]
+ "quiz-react-basics": {
+ "title": "React Basics Quiz",
+ "intro": ["Test what you've learned in this quiz on React Basics."]
+ },
+ "rugw": {
+ "title": "267",
+ "intro": []
},
"rmpy": {
"title": "268",
"intro": []
},
- "lab-depth-first-search": {
- "title": "Implement the Depth-First Search Algorithm",
- "intro": [
- "For this lab, you will use JavaScript to implement the Depth-First Search algorithm."
- ]
+ "dbta": {
+ "title": "269",
+ "intro": []
+ },
+ "rnfe": {
+ "title": "271",
+ "intro": []
},
"xdyh": {
"title": "270",
"intro": []
},
- "quiz-graphs-and-trees": {
- "title": "Graphs and Trees Quiz",
- "intro": ["Test what you've learned in this quiz on Graphs and Trees."]
- },
"vjgg": {
"title": "272",
"intro": []
},
- "lab-nth-fibonacci-number-generator": {
- "title": "Build the nth Fibonacci number generator",
- "intro": [
- "For this lab, you will implement the nth Fibonacci number generator."
- ]
- },
- "kaui": {
- "title": "274",
+ "ceds": {
+ "title": "273",
"intro": []
},
- "quiz-dynamic-programming": {
- "title": "Dynamic Programming Quiz",
+ "quiz-react-state-and-hooks": {
+ "title": "React State and Hooks Quiz",
"intro": [
- "Test what you've learned in this quiz on Dynamic Programming."
+ "Test what you've learned in this quiz on React State and Hooks."
]
},
+ "ftmi": {
+ "title": "275",
+ "intro": []
+ },
"sgau": {
"title": "276",
"intro": []
@@ -3318,53 +3333,65 @@
"title": "279",
"intro": []
},
- "lab-pokemon-search-app": {
- "title": "Build a Pokémon Search App",
- "intro": ["For this project, you will build a Pokémon search app."]
+ "lrof": {
+ "title": "280",
+ "intro": []
},
"vyzp": {
"title": "281",
"intro": []
},
- "icdr": {
- "title": "283",
+ "zagz": {
+ "title": "282",
"intro": []
},
+ "quiz-advanced-react": {
+ "title": "Advanced React Quiz",
+ "intro": ["Test what you've learned in this quiz on Advanced React."]
+ },
"zdsj": {
"title": "284",
"intro": []
},
- "mzae": {
- "title": "285",
- "intro": []
+ "review-web-performance": {
+ "title": "Web Performance Review",
+ "intro": [
+ "Review the Web Performance concepts to prepare for the upcoming quiz."
+ ]
},
- "gjbf": {
- "title": "286",
- "intro": []
+ "quiz-web-performance": {
+ "title": "Web Performance Quiz",
+ "intro": ["Test what you've learned in this quiz on Web Performance."]
},
"mbpv": {
"title": "287",
"intro": []
},
- "eeez": {
- "title": "288",
- "intro": []
+ "review-css-libraries-and-frameworks": {
+ "title": "CSS Libraries and Frameworks Review",
+ "intro": [
+ "Review the CSS Libraries and Frameworks concepts to prepare for the upcoming quiz."
+ ]
},
- "quiz-web-standards": {
- "title": "Web Standards Quiz",
- "intro": ["Test what you've learned in this quiz on Web Standards."]
+ "quiz-css-libraries-and-frameworks": {
+ "title": "CSS Libraries and Frameworks Quiz",
+ "intro": [
+ "Test what you've learned in this quiz on CSS Libraries and Frameworks."
+ ]
},
"khuu": {
"title": "290",
"intro": []
},
- "xdly": {
- "title": "291",
- "intro": []
+ "review-testing": {
+ "title": "Testing Review",
+ "intro": [
+ "Review the Testing concepts to prepare for the upcoming quiz."
+ ]
},
- "rhhl": {
- "title": "292",
- "intro": []
+ "quiz-testing": {
+ "title": "Testing Quiz",
+ "intro": ["Test what you've learned in this quiz on Testing."]
},
"trvf": {
"title": "293",
@@ -3382,104 +3409,8 @@
"title": "296",
"intro": []
},
- "quiz-react-basics": {
- "title": "React Basics Quiz",
- "intro": ["Test what you've learned in this quiz on React Basics."]
- },
- "hfwi": {
- "title": "298",
- "intro": []
- },
- "rnwr": {
- "title": "299",
- "intro": []
- },
- "oeqv": {
- "title": "300",
- "intro": []
- },
- "rdzk": {
- "title": "301",
- "intro": []
- },
- "vtpz": {
- "title": "302",
- "intro": []
- },
- "dfwl": {
- "title": "303",
- "intro": []
- },
- "adzm": {
- "title": "304",
- "intro": []
- },
- "quiz-react-state-and-hooks": {
- "title": "React State and Hooks Quiz",
- "intro": [
- "Test what you've learned in this quiz on React State and Hooks."
- ]
- },
- "voks": {
- "title": "306",
- "intro": []
- },
- "uwum": {
- "title": "307",
- "intro": []
- },
- "ukem": {
- "title": "308",
- "intro": []
- },
- "sdjg": {
- "title": "309",
- "intro": []
- },
- "buzx": {
- "title": "310",
- "intro": []
- },
- "pexz": {
- "title": "311",
- "intro": []
- },
- "prlo": {
- "title": "312",
- "intro": []
- },
- "jsnd": {
- "title": "313",
- "intro": []
- },
- "quiz-advanced-react": {
- "title": "Advanced React Quiz",
- "intro": ["Test what you've learned in this quiz on Advanced React."]
- },
- "tkgg": {
- "title": "315",
- "intro": []
- },
- "review-web-performance": {
- "title": "Web Performance Review",
- "intro": [
- "Review the Web Performance concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-web-performance": {
- "title": "Web Performance Quiz",
- "intro": ["Test what you've learned in this quiz on Web Performance."]
- },
- "hzab": {
- "title": "318",
- "intro": []
- },
- "ggea": {
- "title": "319",
- "intro": []
- },
- "vgvz": {
- "title": "320",
+ "muyw": {
+ "title": "297",
"intro": []
},
"review-typescript": {
@@ -3492,48 +3423,18 @@
"title": "TypeScript Quiz",
"intro": ["Test what you've learned in this quiz on TypeScript."]
},
- "zhhp": {
- "title": "323",
- "intro": []
- },
- "review-css-libraries-and-frameworks": {
- "title": "CSS Libraries and Frameworks Review",
- "intro": [
- "Review the CSS Libraries and Frameworks concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-css-libraries-and-frameworks": {
- "title": "CSS Libraries and Frameworks Quiz",
- "intro": [
- "Test what you've learned in this quiz on CSS Libraries and Frameworks."
- ]
- },
- "gora": {
- "title": "326",
- "intro": []
- },
- "review-testing": {
- "title": "Testing Review",
- "intro": [
- "Review the Testing concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-testing": {
- "title": "Testing Quiz",
- "intro": ["Test what you've learned in this quiz on Testing."]
- },
"review-front-end-libraries": {
"title": "Front End Libraries Review",
"intro": [
"Review the Front End Libraries concepts to prepare for the upcoming quiz."
]
},
- "mfwu": {
- "title": "330",
+ "rdzk": {
+ "title": "301",
"intro": []
},
- "dfcd": {
- "title": "331",
+ "vtpz": {
+ "title": "302",
"intro": []
},
"workshop-bash-boilerplate": {
@@ -3553,8 +3454,8 @@
"title": "Bash Commands Quiz",
"intro": ["Test what you've learned in this quiz on Bash Commands."]
},
- "thsj": {
- "title": "335",
+ "voks": {
+ "title": "306",
"intro": []
},
"workshop-mario-database": {
@@ -3582,8 +3483,8 @@
"Test what you've learned in this quiz on Relational Databases."
]
},
- "ynqt": {
- "title": "340",
+ "pexz": {
+ "title": "311",
"intro": []
},
"workshop-bash-five-programs": {
@@ -3603,8 +3504,8 @@
"title": "Bash Scripting Quiz",
"intro": ["Test what you've learned in this quiz on Bash Scripting."]
},
- "pegc": {
- "title": "344",
+ "tkgg": {
+ "title": "315",
"intro": []
},
"workshop-sql-student-database-part-1": {
@@ -3656,8 +3557,8 @@
"title": "Bash and SQL Quiz",
"intro": ["Test what you've learned in this quiz on Bash and SQL."]
},
- "movb": {
- "title": "353",
+ "eeez": {
+ "title": "324",
"intro": []
},
"workshop-castle": {
@@ -3675,8 +3576,8 @@
"title": "Nano Quiz",
"intro": ["Test what you've learned in this quiz on Nano."]
},
- "pzmc": {
- "title": "357",
+ "rhhl": {
+ "title": "328",
"intro": []
},
"workshop-sql-reference-object": {
@@ -3712,6 +3613,122 @@
"Review the Relational Databases concepts to prepare for the upcoming quiz."
]
},
+ "thsj": {
+ "title": "335",
+ "intro": []
+ },
+ "uwum": {
+ "title": "336",
+ "intro": []
+ },
+ "asfv": {
+ "title": "337",
+ "intro": []
+ },
+ "bvfx": {
+ "title": "338",
+ "intro": []
+ },
+ "buzx": {
+ "title": "339",
+ "intro": []
+ },
+ "ynqt": {
+ "title": "340",
+ "intro": []
+ },
+ "prlo": {
+ "title": "341",
+ "intro": []
+ },
+ "jsnd": {
+ "title": "342",
+ "intro": []
+ },
+ "sxdc": {
+ "title": "343",
+ "intro": []
+ },
+ "pegc": {
+ "title": "344",
+ "intro": []
+ },
+ "mzae": {
+ "title": "345",
+ "intro": []
+ },
+ "gjbf": {
+ "title": "346",
+ "intro": []
+ },
+ "hzab": {
+ "title": "347",
+ "intro": []
+ },
+ "ggea": {
+ "title": "348",
+ "intro": []
+ },
+ "vgvz": {
+ "title": "349",
+ "intro": []
+ },
+ "hfwi": {
+ "title": "350",
+ "intro": []
+ },
+ "rnwr": {
+ "title": "351",
+ "intro": []
+ },
+ "zhhp": {
+ "title": "352",
+ "intro": []
+ },
+ "movb": {
+ "title": "353",
+ "intro": []
+ },
+ "ngor": {
+ "title": "354",
+ "intro": []
+ },
+ "gora": {
+ "title": "355",
+ "intro": []
+ },
+ "xdly": {
+ "title": "356",
+ "intro": []
+ },
+ "pzmc": {
+ "title": "357",
+ "intro": []
+ },
+ "oeqv": {
+ "title": "358",
+ "intro": []
+ },
+ "mfwu": {
+ "title": "359",
+ "intro": []
+ },
+ "dfcd": {
+ "title": "360",
+ "intro": []
+ },
+ "dfwl": {
+ "title": "361",
+ "intro": []
+ },
+ "adzm": {
+ "title": "362",
+ "intro": []
+ },
+ "kaui": {
+ "title": "363",
+ "intro": []
+ },
"zpjj": {
"title": "364",
"intro": []
@@ -3720,17 +3737,13 @@
"title": "365",
"intro": []
},
- "review-security-and-privacy": {
- "title": "Security and Privacy Review",
- "intro": [
- "Review the Security and Privacy concepts to prepare for the upcoming quiz."
- ]
+ "ukem": {
+ "title": "366",
+ "intro": []
},
- "quiz-security-and-privacy": {
- "title": "Security and Privacy Quiz",
- "intro": [
- "Test what you've learned in this quiz on Security and Privacy."
- ]
+ "sdjg": {
+ "title": "367",
+ "intro": []
},
"qjov": {
"title": "368",
@@ -3760,6 +3773,10 @@
"title": "382",
"intro": []
},
+ "xfrd": {
+ "title": "383",
+ "intro": []
+ },
"nkjt": {
"title": "384",
"intro": []
diff --git a/client/i18n/locales/korean/translations.json b/client/i18n/locales/korean/translations.json
index f086b5ea6508e3..fc7d3f211beb93 100644
--- a/client/i18n/locales/korean/translations.json
+++ b/client/i18n/locales/korean/translations.json
@@ -852,7 +852,7 @@
"expired-link": "Looks like the link you clicked has expired, please request a fresh link, to sign in",
"signin-success": "Success! You have signed in to your account. Happy Coding!",
"social-auth-gone": "We are moving away from social authentication for privacy reasons. Next time we recommend using your email address: {{email}} to sign in instead.",
- "name-needed": "We need your name so we can put it on your certification. Add your name to your account settings and click the save button. Then we can issue your certification.",
+ "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.",
"incomplete-steps": "It looks like you have not completed the necessary steps. Please complete the required projects to claim the {{name}} Certification.",
"already-claimed": "It looks like you already have claimed the {{name}} Certification",
"cert-claim-success": "@{{username}}, you have successfully claimed the {{name}} Certification! Congratulations on behalf of the freeCodeCamp.org team!",
diff --git a/client/i18n/locales/portuguese/intro.json b/client/i18n/locales/portuguese/intro.json
index a0adbb894a1810..35be0709b53e21 100644
--- a/client/i18n/locales/portuguese/intro.json
+++ b/client/i18n/locales/portuguese/intro.json
@@ -1709,9 +1709,11 @@
"By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer."
],
"blocks": {
- "efpl": {
- "title": "0",
- "intro": []
+ "lecture-welcome-to-freecodecamp": {
+ "title": "Welcome to freeCodeCamp",
+ "intro": [
+ "Watch these videos to learn what freeCodeCamp is, and how millions of people have learned to code and gotten developer jobs using it."
+ ]
},
"lecture-what-is-html": {
"title": "What is HTML?",
@@ -2262,7 +2264,8 @@
"review-css-accessibility": {
"title": "CSS Accessibility Review",
"intro": [
- "Review the CSS Accessibility concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on CSS and accessibility, you first need to review.",
+ "Open up this page to review concepts like color contrast tools and accessibility best practices."
]
},
"quiz-css-accessibility": {
@@ -2425,7 +2428,8 @@
"review-css-grid": {
"title": "CSS Grid Review",
"intro": [
- "Review the CSS Grid concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on the fundamentals of CSS Grid, you first need to review.",
+ "Open up this page to review how to work with the different CSS Grid properties like grid-template-columns, grid-gap and more."
]
},
"quiz-css-grid": {
@@ -2438,9 +2442,12 @@
"In these lecture videos, you will learn about animations and accessibility."
]
},
- "dpaq": {
- "title": "120",
- "intro": []
+ "workshop-ferris-wheel": {
+ "title": "Build an Animated Ferris Wheel",
+ "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."
+ ]
},
"lab-moon-orbit": {
"title": "Build a Moon Orbit",
@@ -2464,7 +2471,8 @@
"review-css-animations": {
"title": "CSS Animations Review",
"intro": [
- "Review the CSS Animations concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on working with CSS animations, you first need to review.",
+ "Open up this page to review concepts including prefers-reduced-motion, the @keyframes rule and more."
]
},
"quiz-css-animations": {
@@ -2475,7 +2483,10 @@
},
"review-css": {
"title": "CSS Review",
- "intro": ["Review the CSS concepts to prepare for the upcoming exam."]
+ "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."
+ ]
},
"wvjx": {
"title": "127",
@@ -2515,7 +2526,8 @@
"review-javascript-variables-and-data-types": {
"title": "JavaScript Variables and Data Types Review",
"intro": [
- "Review the JavaScript Variables and Data Types concepts to prepare for the upcoming quiz."
+ "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."
]
},
"quiz-javascript-variables-and-data-types": {
@@ -2546,7 +2558,8 @@
"review-javascript-strings": {
"title": "JavaScript Strings Review",
"intro": [
- "Review the JavaScript Strings concepts to prepare for the upcoming quiz."
+ "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."
]
},
"quiz-javascript-strings": {
@@ -2647,7 +2660,8 @@
"review-javascript-functions": {
"title": "JavaScript Functions Review",
"intro": [
- "Review the JavaScript Functions concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on JavaScript functions, HTML, you first need to review the concepts.",
+ "Open up this page to review functions, arrow functions and scope."
]
},
"quiz-javascript-functions": {
@@ -2656,9 +2670,11 @@
"Test what you've learned in this quiz on JavaScript Functions."
]
},
- "mexq": {
- "title": "157",
- "intro": []
+ "lecture-working-with-arrays": {
+ "title": "Working with Arrays",
+ "intro": [
+ "In these lecture videos, you will learn about working with JavaScript arrays."
+ ]
},
"workshop-shopping-list": {
"title": "Build a Shopping List",
@@ -2673,9 +2689,11 @@
"In this lab, you will review working with arrays and random numbers by building a lunch picker program."
]
},
- "mokm": {
- "title": "160",
- "intro": []
+ "lecture-working-with-common-array-methods": {
+ "title": "Working with Common Array Methods",
+ "intro": [
+ "In these lecture videos, you will learn about common array methods."
+ ]
},
"review-javascript-arrays": {
"title": "JavaScript Arrays Review",
@@ -2687,9 +2705,11 @@
"title": "JavaScript Arrays Quiz",
"intro": ["Test what you've learned in this quiz on JavaScript Arrays."]
},
- "dvnt": {
- "title": "163",
- "intro": []
+ "lecture-working-with-objects": {
+ "title": "Working with Objects",
+ "intro": [
+ "In these lecture videos, you will learn about working with objects in JavaScript."
+ ]
},
"workshop-recipe-tracker": {
"title": "Build a Recipe Tracker",
@@ -2713,9 +2733,11 @@
"Test what you've learned in this quiz on JavaScript Objects."
]
},
- "kgtw": {
- "title": "168",
- "intro": []
+ "lecture-working-with-loops": {
+ "title": "Working with Loops",
+ "intro": [
+ "In these lecture videos, you will learn about working with loops in JavaScript."
+ ]
},
"workshop-sentence-analyzer": {
"title": "Build a Sentence Analyzer",
@@ -2737,9 +2759,11 @@
"title": "JavaScript Loops Quiz",
"intro": ["Test what you've learned in this quiz on JavaScript Loops."]
},
- "hjtr": {
- "title": "173",
- "intro": []
+ "lecture-understanding-core-javascript-fundamentals": {
+ "title": "Understanding Core JavaScript Fundamentals",
+ "intro": [
+ "In these lecture videos, you will learn more about core JavaScript fundamentals."
+ ]
},
"lab-pyramid-generator": {
"title": "Build a Pyramid Generator",
@@ -2749,9 +2773,11 @@
"title": "Build a Gradebook App",
"intro": ["For this lab, you will create a gradebook app."]
},
- "epfc": {
- "title": "176",
- "intro": []
+ "lecture-the-var-keyword-and-hoisting": {
+ "title": "The var Keyword and Hoisting",
+ "intro": [
+ "In these lecture videos, you will learn about the var keyword and hoisting in JavaScript."
+ ]
},
"lab-inventory-management-program": {
"title": "Build an Inventory Management Program",
@@ -2759,9 +2785,11 @@
"For this lab, you will build an inventory management program using JavaScript."
]
},
- "fbbn": {
- "title": "178",
- "intro": []
+ "lecture-understanding-modules-imports-and-exports": {
+ "title": "Understanding Modules, Imports, and Exports",
+ "intro": [
+ "In these lecture videos, you will learn about modules, imports, and exports in JavaScript."
+ ]
},
"lnmg": {
"title": "179",
@@ -2779,13 +2807,17 @@
"Test what you've learned in this quiz on JavaScript Fundamentals Quiz."
]
},
- "plic": {
- "title": "182",
- "intro": []
+ "lecture-working-with-higher-order-functions-and-callbacks": {
+ "title": "Working with Higher Order Functions and Callbacks",
+ "intro": [
+ "In these lecture videos, you will learn about working with higher order functions and callbacks."
+ ]
},
- "vjmm": {
- "title": "183",
- "intro": []
+ "workshop-library-manager": {
+ "title": "Build a Library Manager",
+ "intro": [
+ "In this workshop, you will learn higher order array methods by building a library manager"
+ ]
},
"bxtv": {
"title": "184",
@@ -2803,14 +2835,22 @@
"Test what you've learned in this quiz on JavaScript Higher Order Functions."
]
},
- "esfh": {
- "title": "187",
- "intro": []
+ "lecture-working-with-the-dom-click-events-and-web-apis": {
+ "title": "Working with the DOM, Click Events, and Web APIs",
+ "intro": [
+ "In these lecture videos, you will learn how to work with the DOM, click events, and web APIs, using Javascript."
+ ]
},
"gibb": {
"title": "188",
"intro": []
},
+ "workshop-storytelling-app": {
+ "title": "Build a Storytelling App",
+ "intro": [
+ "In this workshop, you will build a storytelling app that will allow you to list different stories based on genre."
+ ]
+ },
"lab-favorite-icon-toggler": {
"title": "Build a Favorite Icon Toggler",
"intro": [
@@ -2829,13 +2869,17 @@
"Test what you've learned in this quiz on DOM Manipulation and Click Events with JavaScript Quiz."
]
},
- "ubpx": {
- "title": "192",
- "intro": []
+ "lecture-understanding-the-event-object-and-event-delegation": {
+ "title": "Understanding the Event Object and Event Delegation",
+ "intro": [
+ "In these lecture videos, you will learn about the event object and event delegation."
+ ]
},
- "lbyi": {
- "title": "193",
- "intro": []
+ "workshop-music-instrument-filter": {
+ "title": "Build a Music Instrument Filter",
+ "intro": [
+ "In this workshop, you will build a music instrument filter with JavaScript."
+ ]
},
"lab-real-time-counter": {
"title": "Build a Real Time Counter",
@@ -2901,9 +2945,12 @@
"title": "205",
"intro": []
},
- "dqth": {
- "title": "206",
- "intro": []
+ "workshop-spam-filter": {
+ "title": "Build a Spam Filter",
+ "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."
+ ]
},
"lab-markdown-to-html-converter": {
"title": "Build a Markdown to HTML Converter",
@@ -3051,9 +3098,12 @@
"title": "235",
"intro": []
},
- "peyf": {
- "title": "236",
- "intro": []
+ "workshop-shopping-cart": {
+ "title": "Build a Shopping Cart",
+ "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."
+ ]
},
"lab-project-idea-board": {
"title": "Build a Project Idea Board",
@@ -3119,50 +3169,29 @@
"Test what you've learned in this quiz on JavaScript Functional Programming."
]
},
- "lab-quicksort-algorithm": {
- "title": "Build the Quicksort Algorithm",
- "intro": [
- "For this lab, you will implement the Quicksort algorithm using JavaScript."
- ]
- },
"dtfv": {
"title": "240",
"intro": []
},
- "quiz-searching-and-sorting-algorithms": {
- "title": "Searching and Sorting Algorithms Quiz",
- "intro": [
- "Test what you've learned in this quiz on Searching and Sorting Algorithms."
- ]
- },
"bnvw": {
- "title": "242",
+ "title": "241",
"intro": []
},
+ "workshop-decimal-to-binary-converter": {
+ "title": "Build a Decimal to Binary Converter",
+ "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."
+ ]
+ },
"xkhk": {
"title": "243",
"intro": []
},
- "lab-roman-numeral-converter": {
- "title": "Build a Roman Numeral Converter",
- "intro": [
- "For this lab, you'll build an application that converts integers to Roman numerals."
- ]
- },
"yaxm": {
"title": "245",
"intro": []
},
- "lab-telephone-number-validator": {
- "title": "Build a Telephone Number Validator",
- "intro": [
- "For this lab, you'll build an application that checks if a number is a valid United States phone number."
- ]
- },
- "lab-cash-register": {
- "title": "Build a Cash Register",
- "intro": ["For this lab, you will build a cash register."]
- },
"udia": {
"title": "248",
"intro": []
@@ -3173,12 +3202,6 @@
"Review the JavaScript Functional Programming concepts to prepare for the upcoming quiz."
]
},
- "quiz-javascript-problem-solving-and-algorithmic-thinking": {
- "title": "JavaScript Problem Solving and Algorithmic Thinking Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Problem Solving and Algorithmic Thinking."
- ]
- },
"mjbe": {
"title": "251",
"intro": []
@@ -3220,88 +3243,80 @@
"title": "258",
"intro": []
},
- "mbib": {
- "title": "259",
- "intro": []
+ "lecture-introduction-to-javascript-libraries-and-frameworks": {
+ "title": "Introduction to JavaScript Libraries and Frameworks",
+ "intro": [
+ "In these lecture videos, you will get an introduction to JavaScript libraries and frameworks."
+ ]
},
"oxiv": {
"title": "260",
"intro": []
},
- "quiz-javascript-object-oriented-programming": {
- "title": "JavaScript Object Oriented Programming Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Object Oriented Programming."
- ]
- },
- "nixz": {
- "title": "262",
+ "fjvx": {
+ "title": "261",
"intro": []
},
- "lab-stack-class": {
- "title": "Build a Stack Class",
+ "lecture-working-with-data-in-react": {
+ "title": "Working with Data in React",
"intro": [
- "For this lab, you will build a stack class using JavaScript."
+ "In these lecture videos, you will learn about working with data in React."
]
},
- "lab-linked-list-class": {
- "title": "Build a Linked List Class",
- "intro": [
- "For this lab, you will build a linked list class using JavaScript."
- ]
+ "cdfr": {
+ "title": "263",
+ "intro": []
},
- "lab-hash-table-class": {
- "title": "Build a Hash Table Class",
- "intro": ["For this lab, you will build a hash table using JavaScript."]
+ "bgtd": {
+ "title": "264",
+ "intro": []
},
- "muyw": {
- "title": "266",
+ "ascd": {
+ "title": "265",
"intro": []
},
- "quiz-javascript-data-structures": {
- "title": "JavaScript Data Structures Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Data Structures."
- ]
+ "quiz-react-basics": {
+ "title": "React Basics Quiz",
+ "intro": ["Test what you've learned in this quiz on React Basics."]
+ },
+ "rugw": {
+ "title": "267",
+ "intro": []
},
"rmpy": {
"title": "268",
"intro": []
},
- "lab-depth-first-search": {
- "title": "Implement the Depth-First Search Algorithm",
- "intro": [
- "For this lab, you will use JavaScript to implement the Depth-First Search algorithm."
- ]
+ "dbta": {
+ "title": "269",
+ "intro": []
+ },
+ "rnfe": {
+ "title": "271",
+ "intro": []
},
"xdyh": {
"title": "270",
"intro": []
},
- "quiz-graphs-and-trees": {
- "title": "Graphs and Trees Quiz",
- "intro": ["Test what you've learned in this quiz on Graphs and Trees."]
- },
"vjgg": {
"title": "272",
"intro": []
},
- "lab-nth-fibonacci-number-generator": {
- "title": "Build the nth Fibonacci number generator",
- "intro": [
- "For this lab, you will implement the nth Fibonacci number generator."
- ]
- },
- "kaui": {
- "title": "274",
+ "ceds": {
+ "title": "273",
"intro": []
},
- "quiz-dynamic-programming": {
- "title": "Dynamic Programming Quiz",
+ "quiz-react-state-and-hooks": {
+ "title": "React State and Hooks Quiz",
"intro": [
- "Test what you've learned in this quiz on Dynamic Programming."
+ "Test what you've learned in this quiz on React State and Hooks."
]
},
+ "ftmi": {
+ "title": "275",
+ "intro": []
+ },
"sgau": {
"title": "276",
"intro": []
@@ -3318,53 +3333,65 @@
"title": "279",
"intro": []
},
- "lab-pokemon-search-app": {
- "title": "Build a Pokémon Search App",
- "intro": ["For this project, you will build a Pokémon search app."]
+ "lrof": {
+ "title": "280",
+ "intro": []
},
"vyzp": {
"title": "281",
"intro": []
},
- "icdr": {
- "title": "283",
+ "zagz": {
+ "title": "282",
"intro": []
},
+ "quiz-advanced-react": {
+ "title": "Advanced React Quiz",
+ "intro": ["Test what you've learned in this quiz on Advanced React."]
+ },
"zdsj": {
"title": "284",
"intro": []
},
- "mzae": {
- "title": "285",
- "intro": []
+ "review-web-performance": {
+ "title": "Web Performance Review",
+ "intro": [
+ "Review the Web Performance concepts to prepare for the upcoming quiz."
+ ]
},
- "gjbf": {
- "title": "286",
- "intro": []
+ "quiz-web-performance": {
+ "title": "Web Performance Quiz",
+ "intro": ["Test what you've learned in this quiz on Web Performance."]
},
"mbpv": {
"title": "287",
"intro": []
},
- "eeez": {
- "title": "288",
- "intro": []
+ "review-css-libraries-and-frameworks": {
+ "title": "CSS Libraries and Frameworks Review",
+ "intro": [
+ "Review the CSS Libraries and Frameworks concepts to prepare for the upcoming quiz."
+ ]
},
- "quiz-web-standards": {
- "title": "Web Standards Quiz",
- "intro": ["Test what you've learned in this quiz on Web Standards."]
+ "quiz-css-libraries-and-frameworks": {
+ "title": "CSS Libraries and Frameworks Quiz",
+ "intro": [
+ "Test what you've learned in this quiz on CSS Libraries and Frameworks."
+ ]
},
"khuu": {
"title": "290",
"intro": []
},
- "xdly": {
- "title": "291",
- "intro": []
+ "review-testing": {
+ "title": "Testing Review",
+ "intro": [
+ "Review the Testing concepts to prepare for the upcoming quiz."
+ ]
},
- "rhhl": {
- "title": "292",
- "intro": []
+ "quiz-testing": {
+ "title": "Testing Quiz",
+ "intro": ["Test what you've learned in this quiz on Testing."]
},
"trvf": {
"title": "293",
@@ -3382,104 +3409,8 @@
"title": "296",
"intro": []
},
- "quiz-react-basics": {
- "title": "React Basics Quiz",
- "intro": ["Test what you've learned in this quiz on React Basics."]
- },
- "hfwi": {
- "title": "298",
- "intro": []
- },
- "rnwr": {
- "title": "299",
- "intro": []
- },
- "oeqv": {
- "title": "300",
- "intro": []
- },
- "rdzk": {
- "title": "301",
- "intro": []
- },
- "vtpz": {
- "title": "302",
- "intro": []
- },
- "dfwl": {
- "title": "303",
- "intro": []
- },
- "adzm": {
- "title": "304",
- "intro": []
- },
- "quiz-react-state-and-hooks": {
- "title": "React State and Hooks Quiz",
- "intro": [
- "Test what you've learned in this quiz on React State and Hooks."
- ]
- },
- "voks": {
- "title": "306",
- "intro": []
- },
- "uwum": {
- "title": "307",
- "intro": []
- },
- "ukem": {
- "title": "308",
- "intro": []
- },
- "sdjg": {
- "title": "309",
- "intro": []
- },
- "buzx": {
- "title": "310",
- "intro": []
- },
- "pexz": {
- "title": "311",
- "intro": []
- },
- "prlo": {
- "title": "312",
- "intro": []
- },
- "jsnd": {
- "title": "313",
- "intro": []
- },
- "quiz-advanced-react": {
- "title": "Advanced React Quiz",
- "intro": ["Test what you've learned in this quiz on Advanced React."]
- },
- "tkgg": {
- "title": "315",
- "intro": []
- },
- "review-web-performance": {
- "title": "Web Performance Review",
- "intro": [
- "Review the Web Performance concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-web-performance": {
- "title": "Web Performance Quiz",
- "intro": ["Test what you've learned in this quiz on Web Performance."]
- },
- "hzab": {
- "title": "318",
- "intro": []
- },
- "ggea": {
- "title": "319",
- "intro": []
- },
- "vgvz": {
- "title": "320",
+ "muyw": {
+ "title": "297",
"intro": []
},
"review-typescript": {
@@ -3492,48 +3423,18 @@
"title": "TypeScript Quiz",
"intro": ["Test what you've learned in this quiz on TypeScript."]
},
- "zhhp": {
- "title": "323",
- "intro": []
- },
- "review-css-libraries-and-frameworks": {
- "title": "CSS Libraries and Frameworks Review",
- "intro": [
- "Review the CSS Libraries and Frameworks concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-css-libraries-and-frameworks": {
- "title": "CSS Libraries and Frameworks Quiz",
- "intro": [
- "Test what you've learned in this quiz on CSS Libraries and Frameworks."
- ]
- },
- "gora": {
- "title": "326",
- "intro": []
- },
- "review-testing": {
- "title": "Testing Review",
- "intro": [
- "Review the Testing concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-testing": {
- "title": "Testing Quiz",
- "intro": ["Test what you've learned in this quiz on Testing."]
- },
"review-front-end-libraries": {
"title": "Front End Libraries Review",
"intro": [
"Review the Front End Libraries concepts to prepare for the upcoming quiz."
]
},
- "mfwu": {
- "title": "330",
+ "rdzk": {
+ "title": "301",
"intro": []
},
- "dfcd": {
- "title": "331",
+ "vtpz": {
+ "title": "302",
"intro": []
},
"workshop-bash-boilerplate": {
@@ -3553,8 +3454,8 @@
"title": "Bash Commands Quiz",
"intro": ["Test what you've learned in this quiz on Bash Commands."]
},
- "thsj": {
- "title": "335",
+ "voks": {
+ "title": "306",
"intro": []
},
"workshop-mario-database": {
@@ -3582,8 +3483,8 @@
"Test what you've learned in this quiz on Relational Databases."
]
},
- "ynqt": {
- "title": "340",
+ "pexz": {
+ "title": "311",
"intro": []
},
"workshop-bash-five-programs": {
@@ -3603,8 +3504,8 @@
"title": "Bash Scripting Quiz",
"intro": ["Test what you've learned in this quiz on Bash Scripting."]
},
- "pegc": {
- "title": "344",
+ "tkgg": {
+ "title": "315",
"intro": []
},
"workshop-sql-student-database-part-1": {
@@ -3656,8 +3557,8 @@
"title": "Bash and SQL Quiz",
"intro": ["Test what you've learned in this quiz on Bash and SQL."]
},
- "movb": {
- "title": "353",
+ "eeez": {
+ "title": "324",
"intro": []
},
"workshop-castle": {
@@ -3675,8 +3576,8 @@
"title": "Nano Quiz",
"intro": ["Test what you've learned in this quiz on Nano."]
},
- "pzmc": {
- "title": "357",
+ "rhhl": {
+ "title": "328",
"intro": []
},
"workshop-sql-reference-object": {
@@ -3712,6 +3613,122 @@
"Review the Relational Databases concepts to prepare for the upcoming quiz."
]
},
+ "thsj": {
+ "title": "335",
+ "intro": []
+ },
+ "uwum": {
+ "title": "336",
+ "intro": []
+ },
+ "asfv": {
+ "title": "337",
+ "intro": []
+ },
+ "bvfx": {
+ "title": "338",
+ "intro": []
+ },
+ "buzx": {
+ "title": "339",
+ "intro": []
+ },
+ "ynqt": {
+ "title": "340",
+ "intro": []
+ },
+ "prlo": {
+ "title": "341",
+ "intro": []
+ },
+ "jsnd": {
+ "title": "342",
+ "intro": []
+ },
+ "sxdc": {
+ "title": "343",
+ "intro": []
+ },
+ "pegc": {
+ "title": "344",
+ "intro": []
+ },
+ "mzae": {
+ "title": "345",
+ "intro": []
+ },
+ "gjbf": {
+ "title": "346",
+ "intro": []
+ },
+ "hzab": {
+ "title": "347",
+ "intro": []
+ },
+ "ggea": {
+ "title": "348",
+ "intro": []
+ },
+ "vgvz": {
+ "title": "349",
+ "intro": []
+ },
+ "hfwi": {
+ "title": "350",
+ "intro": []
+ },
+ "rnwr": {
+ "title": "351",
+ "intro": []
+ },
+ "zhhp": {
+ "title": "352",
+ "intro": []
+ },
+ "movb": {
+ "title": "353",
+ "intro": []
+ },
+ "ngor": {
+ "title": "354",
+ "intro": []
+ },
+ "gora": {
+ "title": "355",
+ "intro": []
+ },
+ "xdly": {
+ "title": "356",
+ "intro": []
+ },
+ "pzmc": {
+ "title": "357",
+ "intro": []
+ },
+ "oeqv": {
+ "title": "358",
+ "intro": []
+ },
+ "mfwu": {
+ "title": "359",
+ "intro": []
+ },
+ "dfcd": {
+ "title": "360",
+ "intro": []
+ },
+ "dfwl": {
+ "title": "361",
+ "intro": []
+ },
+ "adzm": {
+ "title": "362",
+ "intro": []
+ },
+ "kaui": {
+ "title": "363",
+ "intro": []
+ },
"zpjj": {
"title": "364",
"intro": []
@@ -3720,17 +3737,13 @@
"title": "365",
"intro": []
},
- "review-security-and-privacy": {
- "title": "Security and Privacy Review",
- "intro": [
- "Review the Security and Privacy concepts to prepare for the upcoming quiz."
- ]
+ "ukem": {
+ "title": "366",
+ "intro": []
},
- "quiz-security-and-privacy": {
- "title": "Security and Privacy Quiz",
- "intro": [
- "Test what you've learned in this quiz on Security and Privacy."
- ]
+ "sdjg": {
+ "title": "367",
+ "intro": []
},
"qjov": {
"title": "368",
@@ -3760,6 +3773,10 @@
"title": "382",
"intro": []
},
+ "xfrd": {
+ "title": "383",
+ "intro": []
+ },
"nkjt": {
"title": "384",
"intro": []
diff --git a/client/i18n/locales/portuguese/translations.json b/client/i18n/locales/portuguese/translations.json
index b5e718e7160f1e..1cbde0071fca5f 100644
--- a/client/i18n/locales/portuguese/translations.json
+++ b/client/i18n/locales/portuguese/translations.json
@@ -852,7 +852,7 @@
"expired-link": "Parece que o link que você clicou expirou. Solicite um novo link para fazer login",
"signin-success": "Sucesso! Você entrou com sua conta. Boa programação!",
"social-auth-gone": "Estamos abandonando a autenticação social por motivos de privacidade. Da próxima vez, recomendamos que você entre com o seu endereço de e-mail: {{email}}.",
- "name-needed": "Precisamos do seu nome para que possamos colocá-lo na sua certificação. Adicione seu nome às configurações da sua conta e clique no botão Salvar. Depois disso, poderemos emitir sua certificação.",
+ "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.",
"incomplete-steps": "Parece que você não completou as etapas necessárias. Complete os projetos necessários para reivindicar a certificação {{name}}.",
"already-claimed": "Parece que você já solicitou a certificação {{name}}",
"cert-claim-success": "@{{username}}, você solicitou a certificação {{name}} com sucesso! Parabéns em nome da equipe do freeCodeCamp.org!",
diff --git a/client/i18n/locales/swahili/intro.json b/client/i18n/locales/swahili/intro.json
index a5ba010255a5f2..6c17c7db6223a1 100644
--- a/client/i18n/locales/swahili/intro.json
+++ b/client/i18n/locales/swahili/intro.json
@@ -1709,9 +1709,11 @@
"By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer."
],
"blocks": {
- "efpl": {
- "title": "0",
- "intro": []
+ "lecture-welcome-to-freecodecamp": {
+ "title": "Welcome to freeCodeCamp",
+ "intro": [
+ "Watch these videos to learn what freeCodeCamp is, and how millions of people have learned to code and gotten developer jobs using it."
+ ]
},
"lecture-what-is-html": {
"title": "What is HTML?",
@@ -2262,7 +2264,8 @@
"review-css-accessibility": {
"title": "CSS Accessibility Review",
"intro": [
- "Review the CSS Accessibility concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on CSS and accessibility, you first need to review.",
+ "Open up this page to review concepts like color contrast tools and accessibility best practices."
]
},
"quiz-css-accessibility": {
@@ -2425,7 +2428,8 @@
"review-css-grid": {
"title": "CSS Grid Review",
"intro": [
- "Review the CSS Grid concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on the fundamentals of CSS Grid, you first need to review.",
+ "Open up this page to review how to work with the different CSS Grid properties like grid-template-columns, grid-gap and more."
]
},
"quiz-css-grid": {
@@ -2438,9 +2442,12 @@
"In these lecture videos, you will learn about animations and accessibility."
]
},
- "dpaq": {
- "title": "120",
- "intro": []
+ "workshop-ferris-wheel": {
+ "title": "Build an Animated Ferris Wheel",
+ "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."
+ ]
},
"lab-moon-orbit": {
"title": "Build a Moon Orbit",
@@ -2464,7 +2471,8 @@
"review-css-animations": {
"title": "CSS Animations Review",
"intro": [
- "Review the CSS Animations concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on working with CSS animations, you first need to review.",
+ "Open up this page to review concepts including prefers-reduced-motion, the @keyframes rule and more."
]
},
"quiz-css-animations": {
@@ -2475,7 +2483,10 @@
},
"review-css": {
"title": "CSS Review",
- "intro": ["Review the CSS concepts to prepare for the upcoming exam."]
+ "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."
+ ]
},
"wvjx": {
"title": "127",
@@ -2515,7 +2526,8 @@
"review-javascript-variables-and-data-types": {
"title": "JavaScript Variables and Data Types Review",
"intro": [
- "Review the JavaScript Variables and Data Types concepts to prepare for the upcoming quiz."
+ "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."
]
},
"quiz-javascript-variables-and-data-types": {
@@ -2546,7 +2558,8 @@
"review-javascript-strings": {
"title": "JavaScript Strings Review",
"intro": [
- "Review the JavaScript Strings concepts to prepare for the upcoming quiz."
+ "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."
]
},
"quiz-javascript-strings": {
@@ -2647,7 +2660,8 @@
"review-javascript-functions": {
"title": "JavaScript Functions Review",
"intro": [
- "Review the JavaScript Functions concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on JavaScript functions, HTML, you first need to review the concepts.",
+ "Open up this page to review functions, arrow functions and scope."
]
},
"quiz-javascript-functions": {
@@ -2656,9 +2670,11 @@
"Test what you've learned in this quiz on JavaScript Functions."
]
},
- "mexq": {
- "title": "157",
- "intro": []
+ "lecture-working-with-arrays": {
+ "title": "Working with Arrays",
+ "intro": [
+ "In these lecture videos, you will learn about working with JavaScript arrays."
+ ]
},
"workshop-shopping-list": {
"title": "Build a Shopping List",
@@ -2673,9 +2689,11 @@
"In this lab, you will review working with arrays and random numbers by building a lunch picker program."
]
},
- "mokm": {
- "title": "160",
- "intro": []
+ "lecture-working-with-common-array-methods": {
+ "title": "Working with Common Array Methods",
+ "intro": [
+ "In these lecture videos, you will learn about common array methods."
+ ]
},
"review-javascript-arrays": {
"title": "JavaScript Arrays Review",
@@ -2687,9 +2705,11 @@
"title": "JavaScript Arrays Quiz",
"intro": ["Test what you've learned in this quiz on JavaScript Arrays."]
},
- "dvnt": {
- "title": "163",
- "intro": []
+ "lecture-working-with-objects": {
+ "title": "Working with Objects",
+ "intro": [
+ "In these lecture videos, you will learn about working with objects in JavaScript."
+ ]
},
"workshop-recipe-tracker": {
"title": "Build a Recipe Tracker",
@@ -2713,9 +2733,11 @@
"Test what you've learned in this quiz on JavaScript Objects."
]
},
- "kgtw": {
- "title": "168",
- "intro": []
+ "lecture-working-with-loops": {
+ "title": "Working with Loops",
+ "intro": [
+ "In these lecture videos, you will learn about working with loops in JavaScript."
+ ]
},
"workshop-sentence-analyzer": {
"title": "Build a Sentence Analyzer",
@@ -2737,9 +2759,11 @@
"title": "JavaScript Loops Quiz",
"intro": ["Test what you've learned in this quiz on JavaScript Loops."]
},
- "hjtr": {
- "title": "173",
- "intro": []
+ "lecture-understanding-core-javascript-fundamentals": {
+ "title": "Understanding Core JavaScript Fundamentals",
+ "intro": [
+ "In these lecture videos, you will learn more about core JavaScript fundamentals."
+ ]
},
"lab-pyramid-generator": {
"title": "Build a Pyramid Generator",
@@ -2749,9 +2773,11 @@
"title": "Build a Gradebook App",
"intro": ["For this lab, you will create a gradebook app."]
},
- "epfc": {
- "title": "176",
- "intro": []
+ "lecture-the-var-keyword-and-hoisting": {
+ "title": "The var Keyword and Hoisting",
+ "intro": [
+ "In these lecture videos, you will learn about the var keyword and hoisting in JavaScript."
+ ]
},
"lab-inventory-management-program": {
"title": "Build an Inventory Management Program",
@@ -2759,9 +2785,11 @@
"For this lab, you will build an inventory management program using JavaScript."
]
},
- "fbbn": {
- "title": "178",
- "intro": []
+ "lecture-understanding-modules-imports-and-exports": {
+ "title": "Understanding Modules, Imports, and Exports",
+ "intro": [
+ "In these lecture videos, you will learn about modules, imports, and exports in JavaScript."
+ ]
},
"lnmg": {
"title": "179",
@@ -2779,13 +2807,17 @@
"Test what you've learned in this quiz on JavaScript Fundamentals Quiz."
]
},
- "plic": {
- "title": "182",
- "intro": []
+ "lecture-working-with-higher-order-functions-and-callbacks": {
+ "title": "Working with Higher Order Functions and Callbacks",
+ "intro": [
+ "In these lecture videos, you will learn about working with higher order functions and callbacks."
+ ]
},
- "vjmm": {
- "title": "183",
- "intro": []
+ "workshop-library-manager": {
+ "title": "Build a Library Manager",
+ "intro": [
+ "In this workshop, you will learn higher order array methods by building a library manager"
+ ]
},
"bxtv": {
"title": "184",
@@ -2803,14 +2835,22 @@
"Test what you've learned in this quiz on JavaScript Higher Order Functions."
]
},
- "esfh": {
- "title": "187",
- "intro": []
+ "lecture-working-with-the-dom-click-events-and-web-apis": {
+ "title": "Working with the DOM, Click Events, and Web APIs",
+ "intro": [
+ "In these lecture videos, you will learn how to work with the DOM, click events, and web APIs, using Javascript."
+ ]
},
"gibb": {
"title": "188",
"intro": []
},
+ "workshop-storytelling-app": {
+ "title": "Build a Storytelling App",
+ "intro": [
+ "In this workshop, you will build a storytelling app that will allow you to list different stories based on genre."
+ ]
+ },
"lab-favorite-icon-toggler": {
"title": "Build a Favorite Icon Toggler",
"intro": [
@@ -2829,13 +2869,17 @@
"Test what you've learned in this quiz on DOM Manipulation and Click Events with JavaScript Quiz."
]
},
- "ubpx": {
- "title": "192",
- "intro": []
+ "lecture-understanding-the-event-object-and-event-delegation": {
+ "title": "Understanding the Event Object and Event Delegation",
+ "intro": [
+ "In these lecture videos, you will learn about the event object and event delegation."
+ ]
},
- "lbyi": {
- "title": "193",
- "intro": []
+ "workshop-music-instrument-filter": {
+ "title": "Build a Music Instrument Filter",
+ "intro": [
+ "In this workshop, you will build a music instrument filter with JavaScript."
+ ]
},
"lab-real-time-counter": {
"title": "Build a Real Time Counter",
@@ -2901,9 +2945,12 @@
"title": "205",
"intro": []
},
- "dqth": {
- "title": "206",
- "intro": []
+ "workshop-spam-filter": {
+ "title": "Build a Spam Filter",
+ "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."
+ ]
},
"lab-markdown-to-html-converter": {
"title": "Build a Markdown to HTML Converter",
@@ -3051,9 +3098,12 @@
"title": "235",
"intro": []
},
- "peyf": {
- "title": "236",
- "intro": []
+ "workshop-shopping-cart": {
+ "title": "Build a Shopping Cart",
+ "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."
+ ]
},
"lab-project-idea-board": {
"title": "Build a Project Idea Board",
@@ -3119,50 +3169,29 @@
"Test what you've learned in this quiz on JavaScript Functional Programming."
]
},
- "lab-quicksort-algorithm": {
- "title": "Build the Quicksort Algorithm",
- "intro": [
- "For this lab, you will implement the Quicksort algorithm using JavaScript."
- ]
- },
"dtfv": {
"title": "240",
"intro": []
},
- "quiz-searching-and-sorting-algorithms": {
- "title": "Searching and Sorting Algorithms Quiz",
- "intro": [
- "Test what you've learned in this quiz on Searching and Sorting Algorithms."
- ]
- },
"bnvw": {
- "title": "242",
+ "title": "241",
"intro": []
},
+ "workshop-decimal-to-binary-converter": {
+ "title": "Build a Decimal to Binary Converter",
+ "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."
+ ]
+ },
"xkhk": {
"title": "243",
"intro": []
},
- "lab-roman-numeral-converter": {
- "title": "Build a Roman Numeral Converter",
- "intro": [
- "For this lab, you'll build an application that converts integers to Roman numerals."
- ]
- },
"yaxm": {
"title": "245",
"intro": []
},
- "lab-telephone-number-validator": {
- "title": "Build a Telephone Number Validator",
- "intro": [
- "For this lab, you'll build an application that checks if a number is a valid United States phone number."
- ]
- },
- "lab-cash-register": {
- "title": "Build a Cash Register",
- "intro": ["For this lab, you will build a cash register."]
- },
"udia": {
"title": "248",
"intro": []
@@ -3173,12 +3202,6 @@
"Review the JavaScript Functional Programming concepts to prepare for the upcoming quiz."
]
},
- "quiz-javascript-problem-solving-and-algorithmic-thinking": {
- "title": "JavaScript Problem Solving and Algorithmic Thinking Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Problem Solving and Algorithmic Thinking."
- ]
- },
"mjbe": {
"title": "251",
"intro": []
@@ -3220,88 +3243,80 @@
"title": "258",
"intro": []
},
- "mbib": {
- "title": "259",
- "intro": []
+ "lecture-introduction-to-javascript-libraries-and-frameworks": {
+ "title": "Introduction to JavaScript Libraries and Frameworks",
+ "intro": [
+ "In these lecture videos, you will get an introduction to JavaScript libraries and frameworks."
+ ]
},
"oxiv": {
"title": "260",
"intro": []
},
- "quiz-javascript-object-oriented-programming": {
- "title": "JavaScript Object Oriented Programming Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Object Oriented Programming."
- ]
- },
- "nixz": {
- "title": "262",
+ "fjvx": {
+ "title": "261",
"intro": []
},
- "lab-stack-class": {
- "title": "Build a Stack Class",
+ "lecture-working-with-data-in-react": {
+ "title": "Working with Data in React",
"intro": [
- "For this lab, you will build a stack class using JavaScript."
+ "In these lecture videos, you will learn about working with data in React."
]
},
- "lab-linked-list-class": {
- "title": "Build a Linked List Class",
- "intro": [
- "For this lab, you will build a linked list class using JavaScript."
- ]
+ "cdfr": {
+ "title": "263",
+ "intro": []
},
- "lab-hash-table-class": {
- "title": "Build a Hash Table Class",
- "intro": ["For this lab, you will build a hash table using JavaScript."]
+ "bgtd": {
+ "title": "264",
+ "intro": []
},
- "muyw": {
- "title": "266",
+ "ascd": {
+ "title": "265",
"intro": []
},
- "quiz-javascript-data-structures": {
- "title": "JavaScript Data Structures Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Data Structures."
- ]
+ "quiz-react-basics": {
+ "title": "React Basics Quiz",
+ "intro": ["Test what you've learned in this quiz on React Basics."]
+ },
+ "rugw": {
+ "title": "267",
+ "intro": []
},
"rmpy": {
"title": "268",
"intro": []
},
- "lab-depth-first-search": {
- "title": "Implement the Depth-First Search Algorithm",
- "intro": [
- "For this lab, you will use JavaScript to implement the Depth-First Search algorithm."
- ]
+ "dbta": {
+ "title": "269",
+ "intro": []
+ },
+ "rnfe": {
+ "title": "271",
+ "intro": []
},
"xdyh": {
"title": "270",
"intro": []
},
- "quiz-graphs-and-trees": {
- "title": "Graphs and Trees Quiz",
- "intro": ["Test what you've learned in this quiz on Graphs and Trees."]
- },
"vjgg": {
"title": "272",
"intro": []
},
- "lab-nth-fibonacci-number-generator": {
- "title": "Build the nth Fibonacci number generator",
- "intro": [
- "For this lab, you will implement the nth Fibonacci number generator."
- ]
- },
- "kaui": {
- "title": "274",
+ "ceds": {
+ "title": "273",
"intro": []
},
- "quiz-dynamic-programming": {
- "title": "Dynamic Programming Quiz",
+ "quiz-react-state-and-hooks": {
+ "title": "React State and Hooks Quiz",
"intro": [
- "Test what you've learned in this quiz on Dynamic Programming."
+ "Test what you've learned in this quiz on React State and Hooks."
]
},
+ "ftmi": {
+ "title": "275",
+ "intro": []
+ },
"sgau": {
"title": "276",
"intro": []
@@ -3318,53 +3333,65 @@
"title": "279",
"intro": []
},
- "lab-pokemon-search-app": {
- "title": "Build a Pokémon Search App",
- "intro": ["For this project, you will build a Pokémon search app."]
+ "lrof": {
+ "title": "280",
+ "intro": []
},
"vyzp": {
"title": "281",
"intro": []
},
- "icdr": {
- "title": "283",
+ "zagz": {
+ "title": "282",
"intro": []
},
+ "quiz-advanced-react": {
+ "title": "Advanced React Quiz",
+ "intro": ["Test what you've learned in this quiz on Advanced React."]
+ },
"zdsj": {
"title": "284",
"intro": []
},
- "mzae": {
- "title": "285",
- "intro": []
+ "review-web-performance": {
+ "title": "Web Performance Review",
+ "intro": [
+ "Review the Web Performance concepts to prepare for the upcoming quiz."
+ ]
},
- "gjbf": {
- "title": "286",
- "intro": []
+ "quiz-web-performance": {
+ "title": "Web Performance Quiz",
+ "intro": ["Test what you've learned in this quiz on Web Performance."]
},
"mbpv": {
"title": "287",
"intro": []
},
- "eeez": {
- "title": "288",
- "intro": []
+ "review-css-libraries-and-frameworks": {
+ "title": "CSS Libraries and Frameworks Review",
+ "intro": [
+ "Review the CSS Libraries and Frameworks concepts to prepare for the upcoming quiz."
+ ]
},
- "quiz-web-standards": {
- "title": "Web Standards Quiz",
- "intro": ["Test what you've learned in this quiz on Web Standards."]
+ "quiz-css-libraries-and-frameworks": {
+ "title": "CSS Libraries and Frameworks Quiz",
+ "intro": [
+ "Test what you've learned in this quiz on CSS Libraries and Frameworks."
+ ]
},
"khuu": {
"title": "290",
"intro": []
},
- "xdly": {
- "title": "291",
- "intro": []
+ "review-testing": {
+ "title": "Testing Review",
+ "intro": [
+ "Review the Testing concepts to prepare for the upcoming quiz."
+ ]
},
- "rhhl": {
- "title": "292",
- "intro": []
+ "quiz-testing": {
+ "title": "Testing Quiz",
+ "intro": ["Test what you've learned in this quiz on Testing."]
},
"trvf": {
"title": "293",
@@ -3382,104 +3409,8 @@
"title": "296",
"intro": []
},
- "quiz-react-basics": {
- "title": "React Basics Quiz",
- "intro": ["Test what you've learned in this quiz on React Basics."]
- },
- "hfwi": {
- "title": "298",
- "intro": []
- },
- "rnwr": {
- "title": "299",
- "intro": []
- },
- "oeqv": {
- "title": "300",
- "intro": []
- },
- "rdzk": {
- "title": "301",
- "intro": []
- },
- "vtpz": {
- "title": "302",
- "intro": []
- },
- "dfwl": {
- "title": "303",
- "intro": []
- },
- "adzm": {
- "title": "304",
- "intro": []
- },
- "quiz-react-state-and-hooks": {
- "title": "React State and Hooks Quiz",
- "intro": [
- "Test what you've learned in this quiz on React State and Hooks."
- ]
- },
- "voks": {
- "title": "306",
- "intro": []
- },
- "uwum": {
- "title": "307",
- "intro": []
- },
- "ukem": {
- "title": "308",
- "intro": []
- },
- "sdjg": {
- "title": "309",
- "intro": []
- },
- "buzx": {
- "title": "310",
- "intro": []
- },
- "pexz": {
- "title": "311",
- "intro": []
- },
- "prlo": {
- "title": "312",
- "intro": []
- },
- "jsnd": {
- "title": "313",
- "intro": []
- },
- "quiz-advanced-react": {
- "title": "Advanced React Quiz",
- "intro": ["Test what you've learned in this quiz on Advanced React."]
- },
- "tkgg": {
- "title": "315",
- "intro": []
- },
- "review-web-performance": {
- "title": "Web Performance Review",
- "intro": [
- "Review the Web Performance concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-web-performance": {
- "title": "Web Performance Quiz",
- "intro": ["Test what you've learned in this quiz on Web Performance."]
- },
- "hzab": {
- "title": "318",
- "intro": []
- },
- "ggea": {
- "title": "319",
- "intro": []
- },
- "vgvz": {
- "title": "320",
+ "muyw": {
+ "title": "297",
"intro": []
},
"review-typescript": {
@@ -3492,48 +3423,18 @@
"title": "TypeScript Quiz",
"intro": ["Test what you've learned in this quiz on TypeScript."]
},
- "zhhp": {
- "title": "323",
- "intro": []
- },
- "review-css-libraries-and-frameworks": {
- "title": "CSS Libraries and Frameworks Review",
- "intro": [
- "Review the CSS Libraries and Frameworks concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-css-libraries-and-frameworks": {
- "title": "CSS Libraries and Frameworks Quiz",
- "intro": [
- "Test what you've learned in this quiz on CSS Libraries and Frameworks."
- ]
- },
- "gora": {
- "title": "326",
- "intro": []
- },
- "review-testing": {
- "title": "Testing Review",
- "intro": [
- "Review the Testing concepts to prepare for the upcoming quiz."
- ]
- },
- "quiz-testing": {
- "title": "Testing Quiz",
- "intro": ["Test what you've learned in this quiz on Testing."]
- },
"review-front-end-libraries": {
"title": "Front End Libraries Review",
"intro": [
"Review the Front End Libraries concepts to prepare for the upcoming quiz."
]
},
- "mfwu": {
- "title": "330",
+ "rdzk": {
+ "title": "301",
"intro": []
},
- "dfcd": {
- "title": "331",
+ "vtpz": {
+ "title": "302",
"intro": []
},
"workshop-bash-boilerplate": {
@@ -3553,8 +3454,8 @@
"title": "Bash Commands Quiz",
"intro": ["Test what you've learned in this quiz on Bash Commands."]
},
- "thsj": {
- "title": "335",
+ "voks": {
+ "title": "306",
"intro": []
},
"workshop-mario-database": {
@@ -3582,8 +3483,8 @@
"Test what you've learned in this quiz on Relational Databases."
]
},
- "ynqt": {
- "title": "340",
+ "pexz": {
+ "title": "311",
"intro": []
},
"workshop-bash-five-programs": {
@@ -3603,8 +3504,8 @@
"title": "Bash Scripting Quiz",
"intro": ["Test what you've learned in this quiz on Bash Scripting."]
},
- "pegc": {
- "title": "344",
+ "tkgg": {
+ "title": "315",
"intro": []
},
"workshop-sql-student-database-part-1": {
@@ -3656,8 +3557,8 @@
"title": "Bash and SQL Quiz",
"intro": ["Test what you've learned in this quiz on Bash and SQL."]
},
- "movb": {
- "title": "353",
+ "eeez": {
+ "title": "324",
"intro": []
},
"workshop-castle": {
@@ -3675,8 +3576,8 @@
"title": "Nano Quiz",
"intro": ["Test what you've learned in this quiz on Nano."]
},
- "pzmc": {
- "title": "357",
+ "rhhl": {
+ "title": "328",
"intro": []
},
"workshop-sql-reference-object": {
@@ -3712,6 +3613,122 @@
"Review the Relational Databases concepts to prepare for the upcoming quiz."
]
},
+ "thsj": {
+ "title": "335",
+ "intro": []
+ },
+ "uwum": {
+ "title": "336",
+ "intro": []
+ },
+ "asfv": {
+ "title": "337",
+ "intro": []
+ },
+ "bvfx": {
+ "title": "338",
+ "intro": []
+ },
+ "buzx": {
+ "title": "339",
+ "intro": []
+ },
+ "ynqt": {
+ "title": "340",
+ "intro": []
+ },
+ "prlo": {
+ "title": "341",
+ "intro": []
+ },
+ "jsnd": {
+ "title": "342",
+ "intro": []
+ },
+ "sxdc": {
+ "title": "343",
+ "intro": []
+ },
+ "pegc": {
+ "title": "344",
+ "intro": []
+ },
+ "mzae": {
+ "title": "345",
+ "intro": []
+ },
+ "gjbf": {
+ "title": "346",
+ "intro": []
+ },
+ "hzab": {
+ "title": "347",
+ "intro": []
+ },
+ "ggea": {
+ "title": "348",
+ "intro": []
+ },
+ "vgvz": {
+ "title": "349",
+ "intro": []
+ },
+ "hfwi": {
+ "title": "350",
+ "intro": []
+ },
+ "rnwr": {
+ "title": "351",
+ "intro": []
+ },
+ "zhhp": {
+ "title": "352",
+ "intro": []
+ },
+ "movb": {
+ "title": "353",
+ "intro": []
+ },
+ "ngor": {
+ "title": "354",
+ "intro": []
+ },
+ "gora": {
+ "title": "355",
+ "intro": []
+ },
+ "xdly": {
+ "title": "356",
+ "intro": []
+ },
+ "pzmc": {
+ "title": "357",
+ "intro": []
+ },
+ "oeqv": {
+ "title": "358",
+ "intro": []
+ },
+ "mfwu": {
+ "title": "359",
+ "intro": []
+ },
+ "dfcd": {
+ "title": "360",
+ "intro": []
+ },
+ "dfwl": {
+ "title": "361",
+ "intro": []
+ },
+ "adzm": {
+ "title": "362",
+ "intro": []
+ },
+ "kaui": {
+ "title": "363",
+ "intro": []
+ },
"zpjj": {
"title": "364",
"intro": []
@@ -3720,17 +3737,13 @@
"title": "365",
"intro": []
},
- "review-security-and-privacy": {
- "title": "Security and Privacy Review",
- "intro": [
- "Review the Security and Privacy concepts to prepare for the upcoming quiz."
- ]
+ "ukem": {
+ "title": "366",
+ "intro": []
},
- "quiz-security-and-privacy": {
- "title": "Security and Privacy Quiz",
- "intro": [
- "Test what you've learned in this quiz on Security and Privacy."
- ]
+ "sdjg": {
+ "title": "367",
+ "intro": []
},
"qjov": {
"title": "368",
@@ -3760,6 +3773,10 @@
"title": "382",
"intro": []
},
+ "xfrd": {
+ "title": "383",
+ "intro": []
+ },
"nkjt": {
"title": "384",
"intro": []
diff --git a/client/i18n/locales/swahili/translations.json b/client/i18n/locales/swahili/translations.json
index 3c8f27c8b62c8f..a68abfab8621e1 100644
--- a/client/i18n/locales/swahili/translations.json
+++ b/client/i18n/locales/swahili/translations.json
@@ -852,7 +852,7 @@
"expired-link": "Inaonekana kiungo ulichobofya kimeisha muda wake, tafadhali omba kiungo kipya ili uingie",
"signin-success": "Umefanikiwa! Umeingia kwenye akaunti yako. Happy Coding!",
"social-auth-gone": "Tunaondoka kwenye uthibitishaji wa kijamii kwa sababu za faragha. Wakati ujao tunapendekeza utumie anwani yako ya barua pepe: {{email}} ili uingie badala yake.",
- "name-needed": "Tunahitaji jina lako ili tuweze kuliweka kwenye cheti chako. Ongeza jina lako kwenye mipangilio ya akaunti yako na ubofye kitufe cha kuhifadhi. Kisha tunaweza kutoa cheti chako.",
+ "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.",
"incomplete-steps": "Inaonekana hujakamilisha hatua zinazohitajika. Tafadhali kamilisha miradi inayohitajika ili kudai Cheti cha {{name}}.",
"already-claimed": "Inaonekana tayari umedai Cheti cha {{name}}",
"cert-claim-success": "@{{username}}, umefanikiwa kudai Cheti cha {{name}}! Hongera kwa niaba ya timu ya freeCodeCamp.org!",
diff --git a/client/i18n/locales/ukrainian/intro.json b/client/i18n/locales/ukrainian/intro.json
index fe73824d1853e3..b2a8b46d3d1ae0 100644
--- a/client/i18n/locales/ukrainian/intro.json
+++ b/client/i18n/locales/ukrainian/intro.json
@@ -1701,9 +1701,11 @@
"Наприкінці курсу ви отримаєте практичні навички та досвід, які дозволять впевнено розробляти повноцінні вебзастосунки, що підготує вас до успішної кар’єри full stack розробника."
],
"blocks": {
- "efpl": {
- "title": "0",
- "intro": []
+ "lecture-welcome-to-freecodecamp": {
+ "title": "Вітаємо у freeCodeCamp",
+ "intro": [
+ "Перегляньте ці відео, щоб дізнатись про freeCodeCamp: завдяки цій спільноті мільйони людей навчились програмувати та стали розробниками."
+ ]
},
"lecture-what-is-html": {
"title": "Що таке HTML?",
@@ -1893,7 +1895,7 @@
"intro": []
},
"lecture-understanding-computer-internet-and-tooling-basics": {
- "title": "Основи комп’ютера, інтернету та інструментів",
+ "title": "Знайомство з комп’ютером, інтернетом та інструментами",
"intro": [
"У цих відеолекціях ви дізнаєтесь про комп’ютер, інтернет та різні інструменти."
]
@@ -2242,7 +2244,8 @@
"review-css-accessibility": {
"title": "Повторення доступності в CSS",
"intro": [
- "Пригадайте поняття з теми «Доступність в CSS», щоб підготуватись до тесту."
+ "Перш ніж перейти до тесту «Доступність в CSS», повторіть основні поняття.",
+ "Відкрийте цю сторінку, щоб пригадати інструменти контрастності кольорів та найкращі практики доступності."
]
},
"quiz-css-accessibility": {
@@ -2273,8 +2276,8 @@
"review-css-attribute-selectors": {
"title": "Повторення селекторів атрибутів у CSS",
"intro": [
- "Before you are quizzed on the fundamentals of CSS attribute selectors, you first need to review.",
- "Open up this page to review concepts like how to work with different attribute selectors that target links with the href and title attributes."
+ "Перш ніж перейти до тесту «Селектори атрибутів у CSS», повторіть основні поняття.",
+ "Відкрийте цю сторінку, щоб пригадати, як працювати з різними селекторами атрибутів, які націлюють посилання атрибутами href та title."
]
},
"quiz-css-attribute-selectors": {
@@ -2282,7 +2285,7 @@
"intro": ["Перевірте, що ви дізнались про селектори атрибутів у CSS."]
},
"lecture-understanding-how-to-work-with-floats-and-positioning-in-css": {
- "title": "Робота з вирівнюванням й позиціюванням в CSS",
+ "title": "Знайомство з вирівнюванням й позиціюванням в CSS",
"intro": [
"У цих відеолекціях ви дізнаєтесь, як працювати з вирівнюванням й позиціюванням у CSS."
]
@@ -2303,8 +2306,8 @@
"review-css-positioning": {
"title": "Повторення позиціювання в CSS",
"intro": [
- "Before you are quizzed on the fundamentals of CSS positioning concepts, you first need to review.",
- "Open up this page to review concepts like floats, relative positioning, absolute positioning and more."
+ "Перш ніж перейти до тесту «Позиціювання в CSS», повторіть основні поняття.",
+ "Відкрийте цю сторінку, щоб пригадати обтікання, відносне позиціювання, абсолютне позиціювання та багато іншого."
]
},
"quiz-css-positioning": {
@@ -2401,7 +2404,8 @@
"review-css-grid": {
"title": "Повторення сітки в CSS",
"intro": [
- "Пригадайте поняття з теми «Сітка в CSS», щоб підготуватись до тесту."
+ "Перш ніж перейти до тесту «Сітка в CSS», повторіть основні поняття.",
+ "Відкрийте цю сторінку, щоб пригадати, як працювати з різними властивостями CSS-сітки, серед яких grid-template-columns, grid-gap тощо."
]
},
"quiz-css-grid": {
@@ -2414,9 +2418,12 @@
"У цих відеолекціях ви дізнаєтесь про анімацію та доступність."
]
},
- "dpaq": {
- "title": "120",
- "intro": []
+ "workshop-ferris-wheel": {
+ "title": "Створіть оглядове колесо",
+ "intro": [
+ "У CSS можна використати анімацію, щоб привернути увагу до певних розділів вебсторінки та зробити її більш привабливою.",
+ "У цьому практичному занятті ви побудуєте оглядове колесо. Ви будете використовувати CSS для анімації, трансформації та регулювання швидкості елементів."
+ ]
},
"lab-moon-orbit": {
"title": "Побудуйте орбіту Місяця",
@@ -2438,7 +2445,8 @@
"review-css-animations": {
"title": "Повторення анімацій в CSS",
"intro": [
- "Пригадайте поняття з теми «Анімації в CSS», щоб підготуватись до тесту."
+ "Перш ніж перейти до тесту «Анімації в CSS», повторіть основні поняття.",
+ "Відкрийте цю сторінку, щоб пригадати prefers-reduced-motion, директиву @keyframes та багато іншого."
]
},
"quiz-css-animations": {
@@ -2448,7 +2456,8 @@
"review-css": {
"title": "Повторення CSS",
"intro": [
- "Пригадайте поняття з теми «CSS», щоб підготуватись до екзамену."
+ "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."
]
},
"wvjx": {
@@ -2456,16 +2465,14 @@
"intro": []
},
"lecture-working-with-code-editors-and-ides": {
- "title": "Working with Code Editors and IDE's",
+ "title": "Робота з редакторами коду та IDE",
"intro": [
- "In these lecture videos, you will learn about working with code editors and IDE's."
+ "У цих відеолекціях ви дізнаєтесь, як працювати з редакторами коду та IDE."
]
},
"lecture-introduction-to-javascript": {
- "title": "Introduction to JavaScript",
- "intro": [
- "In these lecture videos, you will get a basic introduction to JavaScript."
- ]
+ "title": "Вступ до JavaScript",
+ "intro": ["У цих відеолекціях ви ознайомитесь з основами JavaScript."]
},
"workshop-greeting-bot": {
"title": "Створіть вітального бота",
@@ -2481,15 +2488,16 @@
]
},
"lecture-working-with-data-types": {
- "title": "Working with Data Types",
+ "title": "Робота з типами даних",
"intro": [
- "In these lecture videos, you will learn about data types in JavaScript."
+ "У цих відеолекціях ви дізнаєтесь про типи даних в JavaScript."
]
},
"review-javascript-variables-and-data-types": {
"title": "Повторення змінних та типів даних в JavaScript",
"intro": [
- "Пригадайте поняття з теми «Змінні та типи даних в JavaScript», щоб підготуватись до тесту."
+ "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."
]
},
"quiz-javascript-variables-and-data-types": {
@@ -2499,9 +2507,9 @@
]
},
"lecture-working-with-strings-in-javascript": {
- "title": "Working with Strings in JavaScript",
+ "title": "Робота з рядками в JavaScript",
"intro": [
- "In these lecture videos, you will learn about working with strings in JavaScript."
+ "У цих відеолекціях ви дізнаєтесь, як працювати з рядками в JavaScript."
]
},
"workshop-teacher-chatbot": {
@@ -2512,15 +2520,16 @@
]
},
"lecture-working-with-common-string-methods": {
- "title": "Working with Common String Methods",
+ "title": "Поширені методи роботи з рядками",
"intro": [
- "In these lecture videos, you will learn about common String methods."
+ "У цих відеолекціях ви дізнаєтесь про поширені методи роботи з рядками."
]
},
"review-javascript-strings": {
"title": "Повторення рядків у JavaScript",
"intro": [
- "Пригадайте поняття з теми «Рядки в JavaScript», щоб підготуватись до тесту."
+ "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."
]
},
"quiz-javascript-strings": {
@@ -2528,9 +2537,9 @@
"intro": ["Перевірте, що ви дізнались про рядки в JavaScript."]
},
"lecture-working-with-numbers-booleans-and-the-math-object": {
- "title": "Working with Numbers, Booleans, and the Math Object",
+ "title": "Робота з числами, булевими значеннями й об’єктом math",
"intro": [
- "In these lecture videos, you will learn about numbers, booleans, and the Math Object."
+ "У цих відеолекціях ви дізнаєтесь про числа, булеві значення й об’єкт math."
]
},
"workshop-mathbot": {
@@ -2546,9 +2555,9 @@
]
},
"lecture-working-with-numbers-and-common-number-methods": {
- "title": "Working with Numbers and Common Number Methods",
+ "title": "Робота з числами й поширені методи роботи з ними",
"intro": [
- "In these lecture videos, you will learn about numbers and common Number methods."
+ "У цих відеолекціях ви дізнаєтесь про поширені методи роботи з числами."
]
},
"review-javascript-math": {
@@ -2562,10 +2571,8 @@
"intro": ["Перевірте, що ви дізнались про математику в JavaScript."]
},
"lecture-understanding-comparisons-and-conditionals": {
- "title": "Understanding Comparisons and Conditionals",
- "intro": [
- "In these lecture videos, you will learn about comparisons and conditionals."
- ]
+ "title": "Знайомство з порівняннями й умовами",
+ "intro": ["У цих відеолекціях ви дізнаєтесь про порівняння та умови."]
},
"review-javascript-comparisons-and-conditionals": {
"title": "Повторення порівняння та умов у JavaScript",
@@ -2580,10 +2587,8 @@
]
},
"lecture-working-with-functions": {
- "title": "Working with Functions",
- "intro": [
- "In these lecture videos, you will learn about working with functions."
- ]
+ "title": "Робота з функціями",
+ "intro": ["У цих відеолекціях ви дізнаєтесь, як працювати з функціями."]
},
"workshop-calculator": {
"title": "Створіть калькулятор",
@@ -2619,16 +2624,19 @@
"review-javascript-functions": {
"title": "Повторення функцій в JavaScript",
"intro": [
- "Пригадайте поняття з теми «Функції в JavaScript», щоб підготуватись до тесту."
+ "Before you are quizzed on JavaScript functions, HTML, you first need to review the concepts.",
+ "Open up this page to review functions, arrow functions and scope."
]
},
"quiz-javascript-functions": {
"title": "Тест «Функції в JavaScript»",
"intro": ["Перевірте, що ви дізнались про функції в JavaScript."]
},
- "mexq": {
- "title": "157",
- "intro": []
+ "lecture-working-with-arrays": {
+ "title": "Робота з масивами",
+ "intro": [
+ "У цих відеолекціях ви дізнаєтесь, як працювати з масивами в JavaScript."
+ ]
},
"workshop-shopping-list": {
"title": "Створіть список покупок",
@@ -2643,9 +2651,11 @@
"У цій лабораторній роботі ви пригадаєте, як працювати з масивами й випадковими числами, створивши програму для вибору перекусу."
]
},
- "mokm": {
- "title": "160",
- "intro": []
+ "lecture-working-with-common-array-methods": {
+ "title": "Поширені методи роботи з масивами",
+ "intro": [
+ "У цих відеолекціях ви дізнаєтесь про поширені методи роботи з масивами."
+ ]
},
"review-javascript-arrays": {
"title": "Повторення масивів у JavaScript",
@@ -2657,9 +2667,11 @@
"title": "Тест «Масиви в JavaScript»",
"intro": ["Перевірте, що ви дізнались про масиви в JavaScript."]
},
- "dvnt": {
- "title": "163",
- "intro": []
+ "lecture-working-with-objects": {
+ "title": "Робота з об’єктами",
+ "intro": [
+ "У цих відеолекціях ви дізнаєтесь, як працювати з об’єктами в JavaScript."
+ ]
},
"workshop-recipe-tracker": {
"title": "Створіть трекер рецептів",
@@ -2681,9 +2693,11 @@
"title": "Тест «Об’єкти в JavaScript»",
"intro": ["Перевірте, що ви дізнались про об’єкти в JavaScript."]
},
- "kgtw": {
- "title": "168",
- "intro": []
+ "lecture-working-with-loops": {
+ "title": "Робота з циклами",
+ "intro": [
+ "У цих відеолекціях ви дізнаєтесь, як працювати з циклами в JavaScript."
+ ]
},
"workshop-sentence-analyzer": {
"title": "Створіть аналізатор речень",
@@ -2707,9 +2721,11 @@
"title": "Тест «Цикли в JavaScript»",
"intro": ["Перевірте, що ви дізнались про цикли в JavaScript."]
},
- "hjtr": {
- "title": "173",
- "intro": []
+ "lecture-understanding-core-javascript-fundamentals": {
+ "title": "Знайомство з основами JavaScript",
+ "intro": [
+ "У цих відеолекціях ви детальніше дізнаєтесь про основи JavaScript."
+ ]
},
"lab-pyramid-generator": {
"title": "Створіть генератор пірамід",
@@ -2721,9 +2737,11 @@
"У цій лабораторній роботі ви створите електронний журнал з оцінками."
]
},
- "epfc": {
- "title": "176",
- "intro": []
+ "lecture-the-var-keyword-and-hoisting": {
+ "title": "Ключове слово var та підняття",
+ "intro": [
+ "У цих відеолекціях ви дізнаєтесь про ключове слово var та підняття в JavaScript."
+ ]
},
"lab-inventory-management-program": {
"title": "Створіть програму керування запасами",
@@ -2731,9 +2749,11 @@
"У цій лабораторній роботі ви створите програму керування запасами за допомогою JavaScript."
]
},
- "fbbn": {
- "title": "178",
- "intro": []
+ "lecture-understanding-modules-imports-and-exports": {
+ "title": "Знайомство з модулями, імпортом та експортом",
+ "intro": [
+ "У цих відеолекціях ви дізнаєтесь про модулі, імпорт та експорт в JavaScript."
+ ]
},
"lnmg": {
"title": "179",
@@ -2749,13 +2769,17 @@
"title": "Тест «Основи JavaScript»",
"intro": ["Перевірте, що ви дізнались про основи JavaScript."]
},
- "plic": {
- "title": "182",
- "intro": []
+ "lecture-working-with-higher-order-functions-and-callbacks": {
+ "title": "Робота з функціями вищого порядку та зворотного виклику",
+ "intro": [
+ "У цих відеолекціях ви дізнаєтесь, як працювати з функціями вищого порядку та функціями зворотного виклику."
+ ]
},
- "vjmm": {
- "title": "183",
- "intro": []
+ "workshop-library-manager": {
+ "title": "Створіть менеджера бібліотеки",
+ "intro": [
+ "У цьому практичному занятті ви дізнаєтесь про методи вищого порядку для роботи з масивами, створивши менеджера бібліотеки."
+ ]
},
"bxtv": {
"title": "184",
@@ -2773,14 +2797,22 @@
"Перевірте, що ви дізнались про функції вищого порядку в JavaScript."
]
},
- "esfh": {
- "title": "187",
- "intro": []
+ "lecture-working-with-the-dom-click-events-and-web-apis": {
+ "title": "Робота з DOM, подіями click та web API",
+ "intro": [
+ "У цих відеолекціях ви дізнаєтесь, як працювати з DOM, подіями click та web API за допомогою JavaScript."
+ ]
},
"gibb": {
"title": "188",
"intro": []
},
+ "workshop-storytelling-app": {
+ "title": "Build a Storytelling App",
+ "intro": [
+ "In this workshop, you will build a storytelling app that will allow you to list different stories based on genre."
+ ]
+ },
"lab-favorite-icon-toggler": {
"title": "Створіть перемикач вподобаної іконки",
"intro": [
@@ -2799,13 +2831,17 @@
"Перевірте, що ви дізнались про маніпуляцію DOM та події Click в JavaScript."
]
},
- "ubpx": {
- "title": "192",
- "intro": []
+ "lecture-understanding-the-event-object-and-event-delegation": {
+ "title": "Знайомство з подіями та їх делегуванням",
+ "intro": [
+ "У цих відеолекціях ви дізнаєтесь про об’єкт event та делегування подій."
+ ]
},
- "lbyi": {
- "title": "193",
- "intro": []
+ "workshop-music-instrument-filter": {
+ "title": "Build a Music Instrument Filter",
+ "intro": [
+ "In this workshop, you will build a music instrument filter with JavaScript."
+ ]
},
"lab-real-time-counter": {
"title": "Створіть лічильник реального часу",
@@ -2871,9 +2907,12 @@
"title": "205",
"intro": []
},
- "dqth": {
- "title": "206",
- "intro": []
+ "workshop-spam-filter": {
+ "title": "Створіть спам-фільтр",
+ "intro": [
+ "Регулярні вирази (відомі як «regex» або «regexp») — це шаблони, які допомагають програмістам поєднувати, шукати та замінювати текст. Регулярні вирази надзвичайно потужні, але їх важко зрозуміти, оскільки у них використовуються спеціальні символи.",
+ "У цьому практичному занятті ви будете використовувати групи захоплення, позитивний та негативний огляди, а також інші техніки, щоб текст відповідав бажаному."
+ ]
},
"lab-markdown-to-html-converter": {
"title": "Створіть конвертер з markdown у HTML",
@@ -2904,10 +2943,10 @@
"intro": []
},
"workshop-calorie-counter": {
- "title": "Build a Calorie Counter",
+ "title": "Створіть калькулятор калорій",
"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."
+ "Іноді при створенні вебзастосунків потрібно працювати з вхідними даними від користувача. У цьому практичному занятті ви будете обробляти вхідні дані користувача, виконувати обчислення на основі цих даних та динамічно оновлювати інтерфейс для відтворення результатів.",
+ "Ви також попрактикуєте регулярні вирази, шаблонні літерали, метод addEventListener() та багато іншого."
]
},
"egkv": {
@@ -2995,10 +3034,10 @@
"intro": []
},
"workshop-todo-app": {
- "title": "Build a Todo App using Local Storage",
+ "title": "Створіть застосунок зі справами за допомогою локального сховища",
"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."
+ "Локальне сховище — це функція вебпереглядача, яка дозволяє вебзастосункам зберігати пари ключ-значення в браузері користувача. Воно також дозволяє зберігати дані протягом одного сеансу та використовувати їх в наступному.",
+ "У цьому практичному занятті ви навчитеся обробляти вхідні дані, управляти локальним сховищем, виконувати операції CRUD (створення, читання, оновлення, видалення), реалізовувати слухачів подій та перемикати елементи інтерфейсу користувача."
]
},
"lab-bookmark-manager-app": {
@@ -3019,9 +3058,12 @@
"title": "235",
"intro": []
},
- "peyf": {
- "title": "236",
- "intro": []
+ "workshop-shopping-cart": {
+ "title": "Створіть кошик для покупок",
+ "intro": [
+ "У цьому практичному занятті ви створите кошик для покупок, використовуючи класи JavaScript.",
+ "Ви ознайомитесь з ключовим словом this, створите екземпляри класу, імплементуєте методи для маніпуляції даними та багато іншого."
+ ]
},
"lab-project-idea-board": {
"title": "Створіть дошку ідей",
@@ -3087,50 +3129,29 @@
"Перевірте, що ви дізнались про функціональне програмування в JavaScript."
]
},
- "lab-quicksort-algorithm": {
- "title": "Створіть алгоритм швидкого сортування",
- "intro": [
- "У цій лабораторній роботі ви імплементуєте алгоритм швидкого сортування, використовуючи JavaScript."
- ]
- },
"dtfv": {
"title": "240",
"intro": []
},
- "quiz-searching-and-sorting-algorithms": {
- "title": "Тест «Алгоритми пошуку та сортування»",
- "intro": [
- "Перевірте, що ви дізнались про алгоритми пошуку та сортування."
- ]
- },
"bnvw": {
- "title": "242",
+ "title": "241",
"intro": []
},
+ "workshop-decimal-to-binary-converter": {
+ "title": "Build a Decimal to Binary Converter",
+ "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."
+ ]
+ },
"xkhk": {
"title": "243",
"intro": []
},
- "lab-roman-numeral-converter": {
- "title": "Створіть конвертер римських чисел",
- "intro": [
- "У цій лабораторній роботі ви створите застосунок, який перетворює цілі числа в римські."
- ]
- },
"yaxm": {
"title": "245",
"intro": []
},
- "lab-telephone-number-validator": {
- "title": "Створіть валідатор мобільного номера",
- "intro": [
- "У цій лабораторній роботі ви створите застосунок, який перевіряє, чи мобільний номер є дійсним номером США."
- ]
- },
- "lab-cash-register": {
- "title": "Створіть касовий апарат",
- "intro": ["У цій лабораторній роботі ви створите касовий апарат."]
- },
"udia": {
"title": "248",
"intro": []
@@ -3141,12 +3162,6 @@
"Пригадайте поняття з теми «Функціональне програмування в JavaScript», щоб підготуватись до тесту."
]
},
- "quiz-javascript-problem-solving-and-algorithmic-thinking": {
- "title": "Тест «Розв’язання проблем в JavaScript та алгоритмічне мислення»",
- "intro": [
- "Перевірте, що ви дізнались про розв’язання проблем в JavaScript та алгоритмічне мислення."
- ]
- },
"mjbe": {
"title": "251",
"intro": []
@@ -3186,87 +3201,77 @@
"title": "258",
"intro": []
},
- "mbib": {
- "title": "259",
- "intro": []
+ "lecture-introduction-to-javascript-libraries-and-frameworks": {
+ "title": "Вступ до бібліотек і фреймворків JavaScript",
+ "intro": [
+ "У цих відеолекціях ви ознайомитесь з бібліотеками й фреймворками в JavaScript."
+ ]
},
"oxiv": {
"title": "260",
"intro": []
},
- "quiz-javascript-object-oriented-programming": {
- "title": "Тест «Об’єктноорієнтоване програмування на JavaScript»",
- "intro": [
- "Перевірте, що ви дізнались про об’єктноорієнтоване програмування на JavaScript."
- ]
- },
- "nixz": {
- "title": "262",
+ "fjvx": {
+ "title": "261",
"intro": []
},
- "lab-stack-class": {
- "title": "Створіть клас stack",
+ "lecture-working-with-data-in-react": {
+ "title": "Робота з даними в React",
"intro": [
- "У цій лабораторній роботі ви створите клас stack за допомогою JavaScript."
+ "У цих відеолекціях ви дізнаєтесь, як працювати з даними в React."
]
},
- "lab-linked-list-class": {
- "title": "Створіть клас linked list",
- "intro": [
- "У цій лабораторній роботі ви створите клас linked list за допомогою JavaScript."
- ]
+ "cdfr": {
+ "title": "263",
+ "intro": []
},
- "lab-hash-table-class": {
- "title": "Створіть клас hash table",
- "intro": [
- "У цій лабораторній роботі ви створите клас hash table за допомогою JavaScript."
- ]
+ "bgtd": {
+ "title": "264",
+ "intro": []
},
- "muyw": {
- "title": "266",
+ "ascd": {
+ "title": "265",
"intro": []
},
- "quiz-javascript-data-structures": {
- "title": "Тест «Структури даних в JavaScript»",
- "intro": [
- "Перевірте, що ви дізнались про структури даних в JavaScript."
- ]
+ "quiz-react-basics": {
+ "title": "Тест «Основи React»",
+ "intro": ["Перевірте, що ви дізнались про основи React."]
+ },
+ "rugw": {
+ "title": "267",
+ "intro": []
},
"rmpy": {
"title": "268",
"intro": []
},
- "lab-depth-first-search": {
- "title": "Імплементуйте алгоритм пошуку в глибину",
- "intro": [
- "У цій лабораторній роботі ви будете використовувати JavaScript, щоб імплементувати алгоритм пошуку в глибину."
- ]
+ "dbta": {
+ "title": "269",
+ "intro": []
+ },
+ "rnfe": {
+ "title": "271",
+ "intro": []
},
"xdyh": {
"title": "270",
"intro": []
},
- "quiz-graphs-and-trees": {
- "title": "Тест «Графи та дерева»",
- "intro": ["Перевірте, що ви дізнались про графи та дерева."]
- },
"vjgg": {
"title": "272",
"intro": []
},
- "lab-nth-fibonacci-number-generator": {
- "title": "Створіть генератор n-го числа Фібоначчі",
- "intro": [
- "У цій лабораторній роботі ви імплементуєте генератор n-го числа Фібоначчі."
- ]
- },
- "kaui": {
- "title": "274",
+ "ceds": {
+ "title": "273",
"intro": []
},
- "quiz-dynamic-programming": {
- "title": "Тест «Динамічне програмування»",
- "intro": ["Перевірте, що ви дізнались про динамічне програмування."]
+ "quiz-react-state-and-hooks": {
+ "title": "Тест «Стани та хуки в React»",
+ "intro": ["Перевірте, що ви дізнались про стани та хуки в React."]
+ },
+ "ftmi": {
+ "title": "275",
+ "intro": []
},
"sgau": {
"title": "276",
@@ -3284,53 +3289,65 @@
"title": "279",
"intro": []
},
- "lab-pokemon-search-app": {
- "title": "Створіть застосунок «Pokémon Search»",
- "intro": ["У цьому проєкті ви створите застосунок з пошуку покемонів."]
+ "lrof": {
+ "title": "280",
+ "intro": []
},
"vyzp": {
"title": "281",
"intro": []
},
- "icdr": {
- "title": "283",
+ "zagz": {
+ "title": "282",
"intro": []
},
+ "quiz-advanced-react": {
+ "title": "Тест «Advanced React»",
+ "intro": ["Перевірте, що ви дізнались про Advanced React."]
+ },
"zdsj": {
"title": "284",
"intro": []
},
- "mzae": {
- "title": "285",
- "intro": []
+ "review-web-performance": {
+ "title": "Повторення вебпродуктивності",
+ "intro": [
+ "Пригадайте поняття з теми «Вебпродуктивність», щоб підготуватись до тесту."
+ ]
},
- "gjbf": {
- "title": "286",
- "intro": []
+ "quiz-web-performance": {
+ "title": "Тест «Вебпродуктивність»",
+ "intro": ["Перевірте, що ви дізнались про вебпродуктивність."]
},
"mbpv": {
"title": "287",
"intro": []
},
- "eeez": {
- "title": "288",
- "intro": []
+ "review-css-libraries-and-frameworks": {
+ "title": "Повторення бібліотек та фреймворків CSS",
+ "intro": [
+ "Пригадайте поняття з теми «Бібліотеки та фреймворки CSS», щоб підготуватись до тесту."
+ ]
},
- "quiz-web-standards": {
- "title": "Тест «Вебстандарти»",
- "intro": ["Перевірте, що ви дізнались про вебстандарти."]
+ "quiz-css-libraries-and-frameworks": {
+ "title": "Тест «Бібліотеки та фреймворки CSS»",
+ "intro": [
+ "Перевірте, що ви дізнались про бібліотеки та фреймворки CSS."
+ ]
},
"khuu": {
"title": "290",
"intro": []
},
- "xdly": {
- "title": "291",
- "intro": []
+ "review-testing": {
+ "title": "Повторення тестування",
+ "intro": [
+ "Пригадайте поняття з теми «Тестування», щоб підготуватись до тесту."
+ ]
},
- "rhhl": {
- "title": "292",
- "intro": []
+ "quiz-testing": {
+ "title": "Тест «Тестування»",
+ "intro": ["Перевірте, що ви дізнались про тестування."]
},
"trvf": {
"title": "293",
@@ -3348,102 +3365,8 @@
"title": "296",
"intro": []
},
- "quiz-react-basics": {
- "title": "Тест «Основи React»",
- "intro": ["Перевірте, що ви дізнались про основи React."]
- },
- "hfwi": {
- "title": "298",
- "intro": []
- },
- "rnwr": {
- "title": "299",
- "intro": []
- },
- "oeqv": {
- "title": "300",
- "intro": []
- },
- "rdzk": {
- "title": "301",
- "intro": []
- },
- "vtpz": {
- "title": "302",
- "intro": []
- },
- "dfwl": {
- "title": "303",
- "intro": []
- },
- "adzm": {
- "title": "304",
- "intro": []
- },
- "quiz-react-state-and-hooks": {
- "title": "Тест «Стани та хуки в React»",
- "intro": ["Перевірте, що ви дізнались про стани та хуки в React."]
- },
- "voks": {
- "title": "306",
- "intro": []
- },
- "uwum": {
- "title": "307",
- "intro": []
- },
- "ukem": {
- "title": "308",
- "intro": []
- },
- "sdjg": {
- "title": "309",
- "intro": []
- },
- "buzx": {
- "title": "310",
- "intro": []
- },
- "pexz": {
- "title": "311",
- "intro": []
- },
- "prlo": {
- "title": "312",
- "intro": []
- },
- "jsnd": {
- "title": "313",
- "intro": []
- },
- "quiz-advanced-react": {
- "title": "Тест «Advanced React»",
- "intro": ["Перевірте, що ви дізнались про Advanced React."]
- },
- "tkgg": {
- "title": "315",
- "intro": []
- },
- "review-web-performance": {
- "title": "Повторення вебпродуктивності",
- "intro": [
- "Пригадайте поняття з теми «Вебпродуктивність», щоб підготуватись до тесту."
- ]
- },
- "quiz-web-performance": {
- "title": "Тест «Вебпродуктивність»",
- "intro": ["Перевірте, що ви дізнались про вебпродуктивність."]
- },
- "hzab": {
- "title": "318",
- "intro": []
- },
- "ggea": {
- "title": "319",
- "intro": []
- },
- "vgvz": {
- "title": "320",
+ "muyw": {
+ "title": "297",
"intro": []
},
"review-typescript": {
@@ -3456,48 +3379,18 @@
"title": "Тест «TypeScript»",
"intro": ["Перевірте, що ви дізнались про TypeScript."]
},
- "zhhp": {
- "title": "323",
- "intro": []
- },
- "review-css-libraries-and-frameworks": {
- "title": "Повторення бібліотек та фреймворків CSS",
- "intro": [
- "Пригадайте поняття з теми «Бібліотеки та фреймворки CSS», щоб підготуватись до тесту."
- ]
- },
- "quiz-css-libraries-and-frameworks": {
- "title": "Тест «Бібліотеки та фреймворки CSS»",
- "intro": [
- "Перевірте, що ви дізнались про бібліотеки та фреймворки CSS."
- ]
- },
- "gora": {
- "title": "326",
- "intro": []
- },
- "review-testing": {
- "title": "Повторення тестування",
- "intro": [
- "Пригадайте поняття з теми «Тестування», щоб підготуватись до тесту."
- ]
- },
- "quiz-testing": {
- "title": "Тест «Тестування»",
- "intro": ["Перевірте, що ви дізнались про тестування."]
- },
"review-front-end-libraries": {
"title": "Повторення бібліотек для front end",
"intro": [
"Пригадайте поняття з теми «Бібліотеки для front end», щоб підготуватись до тесту."
]
},
- "mfwu": {
- "title": "330",
+ "rdzk": {
+ "title": "301",
"intro": []
},
- "dfcd": {
- "title": "331",
+ "vtpz": {
+ "title": "302",
"intro": []
},
"workshop-bash-boilerplate": {
@@ -3517,8 +3410,8 @@
"title": "Тест «Команди Bash»",
"intro": ["Перевірте, що ви дізнались про команди Bash."]
},
- "thsj": {
- "title": "335",
+ "voks": {
+ "title": "306",
"intro": []
},
"workshop-mario-database": {
@@ -3544,8 +3437,8 @@
"title": "Тест «Реляційні бази даних»",
"intro": ["Перевірте, що ви дізнались про реляційні бази даних."]
},
- "ynqt": {
- "title": "340",
+ "pexz": {
+ "title": "311",
"intro": []
},
"workshop-bash-five-programs": {
@@ -3565,8 +3458,8 @@
"title": "Тест «Скрипти Bash»",
"intro": ["Перевірте, що ви дізнались про скрипти Bash."]
},
- "pegc": {
- "title": "344",
+ "tkgg": {
+ "title": "315",
"intro": []
},
"workshop-sql-student-database-part-1": {
@@ -3618,8 +3511,8 @@
"title": "Тест «Bash та SQL»",
"intro": ["Перевірте, що ви дізнались про Bash та SQL."]
},
- "movb": {
- "title": "353",
+ "eeez": {
+ "title": "324",
"intro": []
},
"workshop-castle": {
@@ -3639,8 +3532,8 @@
"title": "Тест «Nano»",
"intro": ["Перевірте, що ви дізнались про Nano."]
},
- "pzmc": {
- "title": "357",
+ "rhhl": {
+ "title": "328",
"intro": []
},
"workshop-sql-reference-object": {
@@ -3678,6 +3571,122 @@
"Пригадайте поняття з теми «Реляційні бази даних», щоб підготуватись до тесту."
]
},
+ "thsj": {
+ "title": "335",
+ "intro": []
+ },
+ "uwum": {
+ "title": "336",
+ "intro": []
+ },
+ "asfv": {
+ "title": "337",
+ "intro": []
+ },
+ "bvfx": {
+ "title": "338",
+ "intro": []
+ },
+ "buzx": {
+ "title": "339",
+ "intro": []
+ },
+ "ynqt": {
+ "title": "340",
+ "intro": []
+ },
+ "prlo": {
+ "title": "341",
+ "intro": []
+ },
+ "jsnd": {
+ "title": "342",
+ "intro": []
+ },
+ "sxdc": {
+ "title": "343",
+ "intro": []
+ },
+ "pegc": {
+ "title": "344",
+ "intro": []
+ },
+ "mzae": {
+ "title": "345",
+ "intro": []
+ },
+ "gjbf": {
+ "title": "346",
+ "intro": []
+ },
+ "hzab": {
+ "title": "347",
+ "intro": []
+ },
+ "ggea": {
+ "title": "348",
+ "intro": []
+ },
+ "vgvz": {
+ "title": "349",
+ "intro": []
+ },
+ "hfwi": {
+ "title": "350",
+ "intro": []
+ },
+ "rnwr": {
+ "title": "351",
+ "intro": []
+ },
+ "zhhp": {
+ "title": "352",
+ "intro": []
+ },
+ "movb": {
+ "title": "353",
+ "intro": []
+ },
+ "ngor": {
+ "title": "354",
+ "intro": []
+ },
+ "gora": {
+ "title": "355",
+ "intro": []
+ },
+ "xdly": {
+ "title": "356",
+ "intro": []
+ },
+ "pzmc": {
+ "title": "357",
+ "intro": []
+ },
+ "oeqv": {
+ "title": "358",
+ "intro": []
+ },
+ "mfwu": {
+ "title": "359",
+ "intro": []
+ },
+ "dfcd": {
+ "title": "360",
+ "intro": []
+ },
+ "dfwl": {
+ "title": "361",
+ "intro": []
+ },
+ "adzm": {
+ "title": "362",
+ "intro": []
+ },
+ "kaui": {
+ "title": "363",
+ "intro": []
+ },
"zpjj": {
"title": "364",
"intro": []
@@ -3686,15 +3695,13 @@
"title": "365",
"intro": []
},
- "review-security-and-privacy": {
- "title": "Повторення безпеки та приватності",
- "intro": [
- "Пригадайте поняття з теми «Безпека та приватність», щоб підготуватись до тесту."
- ]
+ "ukem": {
+ "title": "366",
+ "intro": []
},
- "quiz-security-and-privacy": {
- "title": "Тест «Безпека та приватність»",
- "intro": ["Перевірте, що ви дізнались про безпеку та приватність."]
+ "sdjg": {
+ "title": "367",
+ "intro": []
},
"qjov": {
"title": "368",
@@ -3724,6 +3731,10 @@
"title": "382",
"intro": []
},
+ "xfrd": {
+ "title": "383",
+ "intro": []
+ },
"nkjt": {
"title": "384",
"intro": []
diff --git a/client/i18n/locales/ukrainian/translations.json b/client/i18n/locales/ukrainian/translations.json
index 1d5c267c705fab..282168b131e252 100644
--- a/client/i18n/locales/ukrainian/translations.json
+++ b/client/i18n/locales/ukrainian/translations.json
@@ -852,7 +852,7 @@
"expired-link": "Схоже, посилання, на яке ви натиснули, застаріло. Будь ласка, створіть запит на нове посилання, щоб увійти",
"signin-success": "Ви успішно ввійшли у свій обліковий запис. Щасливого програмування!",
"social-auth-gone": "Ми відходимо від автентифікації за допомогою соцмереж через конфіденційність. Наступного разу ми рекомендуємо використовувати свою адресу електронної пошти: {{email}} для входу в систему.",
- "name-needed": "Нам потрібне ваше ім’я, щоб ми могли вказати його на сертифікаті. Додайте своє ім’я до налаштувань облікового запису і натисніть кнопку «Зберегти». Після цього ми зможемо видати вам сертифікат.",
+ "name-needed": "Нам потрібне ваше ім’я, щоб вказати його на сертифікаті. Будь ласка, додайте своє ім’я до профілю і натисніть кнопку «Зберегти». Після цього ми зможемо видати сертифікат.",
"incomplete-steps": "Схоже, ви не завершили необхідні кроки. Будь ласка, виконайте необхідні проєкти, щоб отримати сертифікацію {{name}}.",
"already-claimed": "Схоже, ви вже отримали сертифікацію «{{name}}»",
"cert-claim-success": "@{{username}}, ви успішно отримали сертифікацію «{{name}}»! Вітаємо від імені команди freeCodeCamp.org!",
From 0e98fb2e46df714d3e97c47b28fcd8256d0716ec Mon Sep 17 00:00:00 2001
From: freeCodeCamp's Camper Bot Map and Set objects, as well as WeakSet and WeakMap."
]
},
- "quiz-javascript-maps-sets-and-json": {
- "title": "JavaScript Maps, Sets, and JSON Quiz",
+ "quiz-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Quiz",
"intro": [
- "Test what you've learned in this quiz on JavaScript Maps, Sets, and JSON."
+ "Test what you've learned in this quiz on JavaScript Maps and Sets."
]
},
"lecture-working-with-client-side-storage-and-crud-operations": {
diff --git a/client/i18n/locales/chinese/intro.json b/client/i18n/locales/chinese/intro.json
index d217555b0a228c..d4e41be09f0789 100644
--- a/client/i18n/locales/chinese/intro.json
+++ b/client/i18n/locales/chinese/intro.json
@@ -1722,7 +1722,7 @@
"form-validation": "Form Validation",
"javascript-dates": "Dates",
"audio-and-video-events": "Audio and Video Events",
- "maps-sets-and-json": "Maps and Sets",
+ "maps-and-sets": "Maps and Sets",
"localstorage-and-crud-operations": "localStorage and CRUD Operations",
"classes-and-the-this-keyword": "Classes",
"recursion": "Recursion",
@@ -3122,16 +3122,17 @@
"title": "227",
"intro": []
},
- "review-javascript-maps-sets-and-json": {
- "title": "JavaScript Maps, Sets, and JSON Review",
+ "review-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Review",
"intro": [
- "Review the JavaScript Maps, Sets, and JSON concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on JS Maps and Sets, you first need to review.",
+ "Open up this page to review concepts such as the Map and Set objects, as well as WeakSet and WeakMap."
]
},
- "quiz-javascript-maps-sets-and-json": {
- "title": "JavaScript Maps, Sets, and JSON Quiz",
+ "quiz-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Quiz",
"intro": [
- "Test what you've learned in this quiz on JavaScript Maps, Sets, and JSON."
+ "Test what you've learned in this quiz on JavaScript Maps and Sets."
]
},
"lecture-working-with-client-side-storage-and-crud-operations": {
diff --git a/client/i18n/locales/espanol/intro.json b/client/i18n/locales/espanol/intro.json
index 2b5ecdde1bdb4b..1c51b0dc61e4d3 100644
--- a/client/i18n/locales/espanol/intro.json
+++ b/client/i18n/locales/espanol/intro.json
@@ -1738,7 +1738,7 @@
"form-validation": "Form Validation",
"javascript-dates": "Dates",
"audio-and-video-events": "Audio and Video Events",
- "maps-sets-and-json": "Maps and Sets",
+ "maps-and-sets": "Maps and Sets",
"localstorage-and-crud-operations": "localStorage and CRUD Operations",
"classes-and-the-this-keyword": "Classes",
"recursion": "Recursion",
@@ -3138,16 +3138,17 @@
"title": "227",
"intro": []
},
- "review-javascript-maps-sets-and-json": {
- "title": "JavaScript Maps, Sets, and JSON Review",
+ "review-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Review",
"intro": [
- "Review the JavaScript Maps, Sets, and JSON concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on JS Maps and Sets, you first need to review.",
+ "Open up this page to review concepts such as the Map and Set objects, as well as WeakSet and WeakMap."
]
},
- "quiz-javascript-maps-sets-and-json": {
- "title": "JavaScript Maps, Sets, and JSON Quiz",
+ "quiz-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Quiz",
"intro": [
- "Test what you've learned in this quiz on JavaScript Maps, Sets, and JSON."
+ "Test what you've learned in this quiz on JavaScript Maps and Sets."
]
},
"lecture-working-with-client-side-storage-and-crud-operations": {
diff --git a/client/i18n/locales/german/intro.json b/client/i18n/locales/german/intro.json
index a9e3a32ad6c277..0acfe1c34ed381 100644
--- a/client/i18n/locales/german/intro.json
+++ b/client/i18n/locales/german/intro.json
@@ -1736,7 +1736,7 @@
"form-validation": "Form Validation",
"javascript-dates": "Dates",
"audio-and-video-events": "Audio and Video Events",
- "maps-sets-and-json": "Maps and Sets",
+ "maps-and-sets": "Maps and Sets",
"localstorage-and-crud-operations": "localStorage and CRUD Operations",
"classes-and-the-this-keyword": "Classes",
"recursion": "Recursion",
@@ -3136,16 +3136,17 @@
"title": "227",
"intro": []
},
- "review-javascript-maps-sets-and-json": {
- "title": "JavaScript Maps, Sets, and JSON Review",
+ "review-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Review",
"intro": [
- "Review the JavaScript Maps, Sets, and JSON concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on JS Maps and Sets, you first need to review.",
+ "Open up this page to review concepts such as the Map and Set objects, as well as WeakSet and WeakMap."
]
},
- "quiz-javascript-maps-sets-and-json": {
- "title": "JavaScript Maps, Sets, and JSON Quiz",
+ "quiz-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Quiz",
"intro": [
- "Test what you've learned in this quiz on JavaScript Maps, Sets, and JSON."
+ "Test what you've learned in this quiz on JavaScript Maps and Sets."
]
},
"lecture-working-with-client-side-storage-and-crud-operations": {
diff --git a/client/i18n/locales/italian/intro.json b/client/i18n/locales/italian/intro.json
index aeb127bd7ffbc7..9c62813f925633 100644
--- a/client/i18n/locales/italian/intro.json
+++ b/client/i18n/locales/italian/intro.json
@@ -1736,7 +1736,7 @@
"form-validation": "Form Validation",
"javascript-dates": "Dates",
"audio-and-video-events": "Audio and Video Events",
- "maps-sets-and-json": "Maps and Sets",
+ "maps-and-sets": "Maps and Sets",
"localstorage-and-crud-operations": "localStorage and CRUD Operations",
"classes-and-the-this-keyword": "Classes",
"recursion": "Recursion",
@@ -3136,16 +3136,17 @@
"title": "227",
"intro": []
},
- "review-javascript-maps-sets-and-json": {
- "title": "JavaScript Maps, Sets, and JSON Review",
+ "review-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Review",
"intro": [
- "Review the JavaScript Maps, Sets, and JSON concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on JS Maps and Sets, you first need to review.",
+ "Open up this page to review concepts such as the Map and Set objects, as well as WeakSet and WeakMap."
]
},
- "quiz-javascript-maps-sets-and-json": {
- "title": "JavaScript Maps, Sets, and JSON Quiz",
+ "quiz-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Quiz",
"intro": [
- "Test what you've learned in this quiz on JavaScript Maps, Sets, and JSON."
+ "Test what you've learned in this quiz on JavaScript Maps and Sets."
]
},
"lecture-working-with-client-side-storage-and-crud-operations": {
diff --git a/client/i18n/locales/japanese/intro.json b/client/i18n/locales/japanese/intro.json
index 23663509123f39..60ddf6ecf1c743 100644
--- a/client/i18n/locales/japanese/intro.json
+++ b/client/i18n/locales/japanese/intro.json
@@ -1736,7 +1736,7 @@
"form-validation": "Form Validation",
"javascript-dates": "Dates",
"audio-and-video-events": "Audio and Video Events",
- "maps-sets-and-json": "Maps and Sets",
+ "maps-and-sets": "Maps and Sets",
"localstorage-and-crud-operations": "localStorage and CRUD Operations",
"classes-and-the-this-keyword": "Classes",
"recursion": "Recursion",
@@ -3136,16 +3136,17 @@
"title": "227",
"intro": []
},
- "review-javascript-maps-sets-and-json": {
- "title": "JavaScript Maps, Sets, and JSON Review",
+ "review-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Review",
"intro": [
- "Review the JavaScript Maps, Sets, and JSON concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on JS Maps and Sets, you first need to review.",
+ "Open up this page to review concepts such as the Map and Set objects, as well as WeakSet and WeakMap."
]
},
- "quiz-javascript-maps-sets-and-json": {
- "title": "JavaScript Maps, Sets, and JSON Quiz",
+ "quiz-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Quiz",
"intro": [
- "Test what you've learned in this quiz on JavaScript Maps, Sets, and JSON."
+ "Test what you've learned in this quiz on JavaScript Maps and Sets."
]
},
"lecture-working-with-client-side-storage-and-crud-operations": {
diff --git a/client/i18n/locales/korean/intro.json b/client/i18n/locales/korean/intro.json
index f4e7f71279a450..918bea0360263b 100644
--- a/client/i18n/locales/korean/intro.json
+++ b/client/i18n/locales/korean/intro.json
@@ -1736,7 +1736,7 @@
"form-validation": "Form Validation",
"javascript-dates": "Dates",
"audio-and-video-events": "Audio and Video Events",
- "maps-sets-and-json": "Maps and Sets",
+ "maps-and-sets": "Maps and Sets",
"localstorage-and-crud-operations": "localStorage and CRUD Operations",
"classes-and-the-this-keyword": "Classes",
"recursion": "Recursion",
@@ -3136,16 +3136,17 @@
"title": "227",
"intro": []
},
- "review-javascript-maps-sets-and-json": {
- "title": "JavaScript Maps, Sets, and JSON Review",
+ "review-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Review",
"intro": [
- "Review the JavaScript Maps, Sets, and JSON concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on JS Maps and Sets, you first need to review.",
+ "Open up this page to review concepts such as the Map and Set objects, as well as WeakSet and WeakMap."
]
},
- "quiz-javascript-maps-sets-and-json": {
- "title": "JavaScript Maps, Sets, and JSON Quiz",
+ "quiz-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Quiz",
"intro": [
- "Test what you've learned in this quiz on JavaScript Maps, Sets, and JSON."
+ "Test what you've learned in this quiz on JavaScript Maps and Sets."
]
},
"lecture-working-with-client-side-storage-and-crud-operations": {
diff --git a/client/i18n/locales/portuguese/intro.json b/client/i18n/locales/portuguese/intro.json
index fa8a17e8c017d0..5e4ff4b8e8a13c 100644
--- a/client/i18n/locales/portuguese/intro.json
+++ b/client/i18n/locales/portuguese/intro.json
@@ -1736,7 +1736,7 @@
"form-validation": "Form Validation",
"javascript-dates": "Dates",
"audio-and-video-events": "Audio and Video Events",
- "maps-sets-and-json": "Maps and Sets",
+ "maps-and-sets": "Maps and Sets",
"localstorage-and-crud-operations": "localStorage and CRUD Operations",
"classes-and-the-this-keyword": "Classes",
"recursion": "Recursion",
@@ -3136,16 +3136,17 @@
"title": "227",
"intro": []
},
- "review-javascript-maps-sets-and-json": {
- "title": "JavaScript Maps, Sets, and JSON Review",
+ "review-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Review",
"intro": [
- "Review the JavaScript Maps, Sets, and JSON concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on JS Maps and Sets, you first need to review.",
+ "Open up this page to review concepts such as the Map and Set objects, as well as WeakSet and WeakMap."
]
},
- "quiz-javascript-maps-sets-and-json": {
- "title": "JavaScript Maps, Sets, and JSON Quiz",
+ "quiz-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Quiz",
"intro": [
- "Test what you've learned in this quiz on JavaScript Maps, Sets, and JSON."
+ "Test what you've learned in this quiz on JavaScript Maps and Sets."
]
},
"lecture-working-with-client-side-storage-and-crud-operations": {
diff --git a/client/i18n/locales/swahili/intro.json b/client/i18n/locales/swahili/intro.json
index ee5dc531ae8a33..80a5c798b518a9 100644
--- a/client/i18n/locales/swahili/intro.json
+++ b/client/i18n/locales/swahili/intro.json
@@ -1736,7 +1736,7 @@
"form-validation": "Form Validation",
"javascript-dates": "Dates",
"audio-and-video-events": "Audio and Video Events",
- "maps-sets-and-json": "Maps and Sets",
+ "maps-and-sets": "Maps and Sets",
"localstorage-and-crud-operations": "localStorage and CRUD Operations",
"classes-and-the-this-keyword": "Classes",
"recursion": "Recursion",
@@ -3136,16 +3136,17 @@
"title": "227",
"intro": []
},
- "review-javascript-maps-sets-and-json": {
- "title": "JavaScript Maps, Sets, and JSON Review",
+ "review-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Review",
"intro": [
- "Review the JavaScript Maps, Sets, and JSON concepts to prepare for the upcoming quiz."
+ "Before you are quizzed on JS Maps and Sets, you first need to review.",
+ "Open up this page to review concepts such as the Map and Set objects, as well as WeakSet and WeakMap."
]
},
- "quiz-javascript-maps-sets-and-json": {
- "title": "JavaScript Maps, Sets, and JSON Quiz",
+ "quiz-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Quiz",
"intro": [
- "Test what you've learned in this quiz on JavaScript Maps, Sets, and JSON."
+ "Test what you've learned in this quiz on JavaScript Maps and Sets."
]
},
"lecture-working-with-client-side-storage-and-crud-operations": {
diff --git a/client/i18n/locales/ukrainian/intro.json b/client/i18n/locales/ukrainian/intro.json
index 7d4cc774154c39..79bd6f3b95bdb7 100644
--- a/client/i18n/locales/ukrainian/intro.json
+++ b/client/i18n/locales/ukrainian/intro.json
@@ -1728,7 +1728,7 @@
"form-validation": "Валідація форм",
"javascript-dates": "Дати",
"audio-and-video-events": "Аудіо- та відеоподії",
- "maps-sets-and-json": "Map та set",
+ "maps-and-sets": "Maps and Sets",
"localstorage-and-crud-operations": "localStorage та операції CRUD",
"classes-and-the-this-keyword": "Класи",
"recursion": "Рекурсія",
@@ -3096,16 +3096,17 @@
"title": "227",
"intro": []
},
- "review-javascript-maps-sets-and-json": {
- "title": "Повторення map, set та JSON в JavaScript",
+ "review-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Review",
"intro": [
- "Пригадайте поняття з теми «Map, set та JSON в JavaScript», щоб підготуватись до тесту."
+ "Before you are quizzed on JS Maps and Sets, you first need to review.",
+ "Open up this page to review concepts such as the Map and Set objects, as well as WeakSet and WeakMap."
]
},
- "quiz-javascript-maps-sets-and-json": {
- "title": "Тест «Map, set та JSON в JavaScript»",
+ "quiz-javascript-maps-and-sets": {
+ "title": "JavaScript Maps and Sets Quiz",
"intro": [
- "Перевірте, що ви дізнались про map, set та JSON в JavaScript."
+ "Test what you've learned in this quiz on JavaScript Maps and Sets."
]
},
"lecture-working-with-client-side-storage-and-crud-operations": {
From 24abd4d9fcafdb442788b9091a315b1df129eb0a Mon Sep 17 00:00:00 2001
From: Tom <20648924+moT01@users.noreply.github.com>
Date: Wed, 4 Dec 2024 12:27:12 -0600
Subject: [PATCH 123/480] fix(curriculum): remove removed lecture challenge
challenge (#57416)
---
.../meta.json | 4 ---
.../6734d6ae0dc8587dbd3d65f7.md | 33 -------------------
2 files changed, 37 deletions(-)
delete mode 100644 curriculum/challenges/english/25-front-end-development/lecture-understanding-asynchronous-programming/6734d6ae0dc8587dbd3d65f7.md
diff --git a/curriculum/challenges/_meta/lecture-understanding-asynchronous-programming/meta.json b/curriculum/challenges/_meta/lecture-understanding-asynchronous-programming/meta.json
index b043dbbc4481a9..bf0732b1f0cc1f 100644
--- a/curriculum/challenges/_meta/lecture-understanding-asynchronous-programming/meta.json
+++ b/curriculum/challenges/_meta/lecture-understanding-asynchronous-programming/meta.json
@@ -37,10 +37,6 @@
{
"id": "673407eb10ca9d68634e81d9",
"title": "What Is the Geolocation API, and How Does the getCurrentPosition Work?"
- },
- {
- "id": "6734d6ae0dc8587dbd3d65f7",
- "title": "What Is the Permissions API, and How Can You Use It?"
}
],
"helpCategory": "JavaScript"
diff --git a/curriculum/challenges/english/25-front-end-development/lecture-understanding-asynchronous-programming/6734d6ae0dc8587dbd3d65f7.md b/curriculum/challenges/english/25-front-end-development/lecture-understanding-asynchronous-programming/6734d6ae0dc8587dbd3d65f7.md
deleted file mode 100644
index c93a45b411b42d..00000000000000
--- a/curriculum/challenges/english/25-front-end-development/lecture-understanding-asynchronous-programming/6734d6ae0dc8587dbd3d65f7.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-id: 6734d6ae0dc8587dbd3d65f7
-title: What Is the Permissions API, and How Can You Use It?
-challengeType: 11
-videoId: nVAaxZ34khk
-dashedName: what-is-the-permissions-api-and-how-can-you-use-it
----
-
-# --description--
-
-Watch the lecture video and answer the questions below.
-
-# --questions--
-
-## --text--
-
-What Is the Permissions API, and How Can You Use It? question?
-
-## --answers--
-
-Answer 1
-
----
-
-Answer 2
-
----
-
-Answer 3
-
-## --video-solution--
-
-1
From e11152d60ba6fccf110acd4606ad9db5ceb76d4e Mon Sep 17 00:00:00 2001
From: Oliver Eyton-Williams {t('learn.exam.qualified')}
-{t('learn.exam.qualified')}
+
+ Stay ahead of the curve with the latest trends in web development. Discover what's new and exciting in 2024
+ Read More +| - profile.challenge - | -- settings.labels.solution - | -- profile.completed - | -|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
-
+ profile.timeline
+
+
+
|
+
{about}
} +{about}
} -{t('profile.donated')}
+{t('profile.donated')}
+ )} + {isTopContributor && ( ++ {t('profile.contributor-prolific', { + year: yearsTopContributor.join(', ') + })} +
+- {t('profile.contributor-prolific', { - year: yearsTopContributor.join(', ') - })} -
-{t('profile.no-certs')}
- )} - {hasLegacyCert && ( -{t('profile.no-certs')}
+ )} + {hasLegacyCert && ( +{description}
-{description}
+- {t('profile.none-completed')} - {t('profile.get-started')} -
- ) : ( -| {t('profile.challenge')} | -{t('settings.labels.solution')} | -{t('profile.completed')} | -
|---|
+ {t('profile.none-completed')} + {t('profile.get-started')} +
+ ) : ( +| {t('profile.challenge')} | +{t('settings.labels.solution')} | +{t('profile.completed')} | +
|---|
Map and Set objects, as well as WeakSet and WeakMap."
+ "Перш ніж перейти до тесту «Map та set в JavaScript», повторіть основні поняття.",
+ "Відкрийте цю сторінку, щоб пригадати об’єкти Map та Set, а також WeakSet й WeakMap."
]
},
"quiz-javascript-maps-and-sets": {
- "title": "JavaScript Maps and Sets Quiz",
- "intro": [
- "Test what you've learned in this quiz on JavaScript Maps and Sets."
- ]
+ "title": "Тест «Map та set в JavaScript»",
+ "intro": ["Перевірте, що ви дізнались про map та set в JavaScript."]
},
"lecture-working-with-client-side-storage-and-crud-operations": {
"title": "Робота зі сховищем на клієнтській стороні та операціями CRUD",
diff --git a/client/i18n/locales/ukrainian/translations.json b/client/i18n/locales/ukrainian/translations.json
index fe81513a4700ec..973af7eb2eb238 100644
--- a/client/i18n/locales/ukrainian/translations.json
+++ b/client/i18n/locales/ukrainian/translations.json
@@ -147,7 +147,7 @@
},
{
"title": "Безоплатна освіта",
- "description": "Learn from our charity and save money on your education. This is made possible by the generous support of our monthly donors."
+ "description": "Навчайтесь зі спільнотою та економте на освіті, що можливо завдяки щедрій підтримці донорів."
},
{
"title": "Зразкові сертифікації",
@@ -238,6 +238,8 @@
"sound-mode": "Це додає приємне звучання акустичної гітари на всьому вебсайті. Ви почуєте музичний супровід, коли будете писати у редакторі, при завершенні випробувань, при затвердженні сертифікацій та інше.",
"sound-volume": "Гучність багаття:",
"scrollbar-width": "Ширина смуги прокрутки редактора",
+ "reset-editor-layout-tooltip": "Reset the editor layout to its default state",
+ "reset-editor-layout": "Reset Editor Layout",
"shortcuts-explained": "В межах завдання натисніть ESC та знак питання, щоб переглянути список доступних скорочень.",
"username": {
"contains invalid characters": "Ім’я користувача «{{username}}» містить неприпустимі символи",
@@ -346,6 +348,7 @@
"donated": "Задонатив(-ла) спільноті",
"projects": "Проєкти",
"stats": "Статистика",
+ "activity": "Activity",
"timeline": "Хронологія",
"none-completed": "Поки що немає виконаних завдань.",
"get-started": "Почніть тут.",
@@ -712,8 +715,8 @@
"help-millions-learn": "Допоможіть мільйонам людей навчатись",
"reach-goals-faster": "Досягайте цілей швидше",
"remove-distractions": "Позбавтесь повідомлень",
- "remove-interruptions": "Remove interruptions",
- "acquire-skills-faster": "Acquire skills faster",
+ "remove-interruptions": "Позбавтесь повідомлень",
+ "acquire-skills-faster": "Набувайте навичок швидше",
"animation-description": "Це 20-секундна анімаційна реклама, щоб заохотити кемперів стати донорами freeCodeCamp. Анімація починається з ведмедика, який стає донором. В результаті відволікаючі спливаючі вікна зникають, і ведмедик може досягти своїх цілей. Потім він закінчує навчання і стає освітнім супергероєм, який допомагає людям по всьому світу.",
"animation-countdown": "До завершення анімації залишилось: {{secondsRemaining}}."
},
@@ -895,6 +898,7 @@
"invalid-update-flag": "Ви намагаєтеся отримати доступ до заборонених ресурсів. Зверніться по допомогу на https://forum.freecodecamp.org, якщо це є дійсним запитом.",
"generate-exam-error": "Під час спроби створити екзамен виникла помилка.",
"cert-not-found": "Сертифікація «{{certSlug}}» не існує.",
+ "reset-editor-layout": "Your editor layout has been reset.",
"ms": {
"transcript": {
"link-err-1": "Будь ласка, вкажіть посилання на стенограму Microsoft в запиті.",
From 9543c7c77dda77ef28b65d2741be5f7d161be852 Mon Sep 17 00:00:00 2001
From: Sem Bauke - decimalToBinary(${obj.inputVal}) -
- `; - }, obj.addElDelay); - - setTimeout(() => { ---fcc-editable-region-- - document.getElementById(obj.inputVal); ---fcc-editable-region-- - }, obj.showMsgDelay); - }); -}; - -const checkUserInput = () => { - const inputInt = parseInt(numberInput.value); - - if (!numberInput.value || isNaN(inputInt) || inputInt < 0) { - alert("Please provide a decimal number greater than or equal to 0"); - return; - } - - if (inputInt === 5) { - showAnimation(); - return; - } - - result.textContent = decimalToBinary(inputInt); - numberInput.value = ""; -}; - -convertBtn.addEventListener("click", checkUserInput); - -numberInput.addEventListener("keydown", (e) => { - if (e.key === "Enter") { - checkUserInput(); - } -}); -``` diff --git a/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464b25851863b0a119eb7b1.md b/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464b25851863b0a119eb7b1.md index f48fa518d68280..8577a5523bff1a 100644 --- a/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464b25851863b0a119eb7b1.md +++ b/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464b25851863b0a119eb7b1.md @@ -1,8 +1,8 @@ --- id: 6464b25851863b0a119eb7b1 -title: Step 105 +title: Step 104 challengeType: 0 -dashedName: step-105 +dashedName: step-104 --- # --description-- diff --git a/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464b3adeee9310bd37ff636.md b/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464b3adeee9310bd37ff636.md index b377f9ac3a91a7..1a6d085ccb48cf 100644 --- a/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464b3adeee9310bd37ff636.md +++ b/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464b3adeee9310bd37ff636.md @@ -1,8 +1,8 @@ --- id: 6464b3adeee9310bd37ff636 -title: Step 106 +title: Step 105 challengeType: 0 -dashedName: step-106 +dashedName: step-105 --- # --description-- diff --git a/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464b8ccb1a5d612c2f857d1.md b/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464b8ccb1a5d612c2f857d1.md index a221825e33bbb8..da49cbe72e2cef 100644 --- a/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464b8ccb1a5d612c2f857d1.md +++ b/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464b8ccb1a5d612c2f857d1.md @@ -1,8 +1,8 @@ --- id: 6464b8ccb1a5d612c2f857d1 -title: Step 107 +title: Step 106 challengeType: 0 -dashedName: step-107 +dashedName: step-106 --- # --description-- diff --git a/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464c6d6698a8027f8c9d6be.md b/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464c6d6698a8027f8c9d6be.md index 4248653d1dabe3..5816b208376d98 100644 --- a/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464c6d6698a8027f8c9d6be.md +++ b/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464c6d6698a8027f8c9d6be.md @@ -1,8 +1,8 @@ --- id: 6464c6d6698a8027f8c9d6be -title: Step 108 +title: Step 107 challengeType: 0 -dashedName: step-108 +dashedName: step-107 --- # --description-- diff --git a/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464ad3c9b2e6cf58224cfa9.md b/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/674dd79dcfa5690e16e59775.md similarity index 83% rename from curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464ad3c9b2e6cf58224cfa9.md rename to curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/674dd79dcfa5690e16e59775.md index 2d8fca9bd84c57..bdc5b260ab357e 100644 --- a/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/6464ad3c9b2e6cf58224cfa9.md +++ b/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-recursion-by-building-a-decimal-to-binary-converter/674dd79dcfa5690e16e59775.md @@ -1,5 +1,5 @@ --- -id: 6464ad3c9b2e6cf58224cfa9 +id: 674dd79dcfa5690e16e59775 title: Step 103 challengeType: 0 dashedName: step-103 @@ -9,7 +9,9 @@ dashedName: step-103 You have set the `id` attribute for your paragraph elements to the `obj.inputVal` property. -Now, use `getElementById` to select the element with that attribute value, again using the `obj.inputVal` property. +Now, use the `.getElementById()` method to select the element with that attribute value, again using the `obj.inputVal` property. + +After that, set the `textContent` property of the selected element equal to the `msg` property of the current object, to update its text after the delay you specified earlier. # --hints-- @@ -18,10 +20,36 @@ You should use the `.getElementById()` method to target the element where the `i ```js assert.match( String(showAnimation), - /setTimeout\s*\([\s\S]+document\.getElementById\s*\(\s*obj\.inputVal\s*\)|setTimeout\s*\([\s\S]+document\.getElementById\s*\(\s*obj\s*\[\s*('|"|`)\s*inputVal\s*\1\s*\]\s*\)/ + /setTimeout\s*\([\s\S]+document\.getElementById\s*\(.*(?:obj\.inputVal|obj\s*\[\s*('|"|`)\s*inputVal\s*\1\s*\]).*\)/ +); +``` + +You should chain `.textContent` to the `.getElementById()` method. + +```js +assert.match( + String(showAnimation), + /setTimeout\s*\([\s\S]+document\.getElementById\s*\(.*(?:obj\.inputVal|obj\s*\[\s*('|"|`)\s*inputVal\s*\1\s*\]).*\)\s*\.\s*textContent/ ); ``` +You should set the `textContent` property of the targeted element equal to the `msg` property of the current object. + +```js +const oldSetTimeout = setTimeout; +setTimeout = (functionName, delay) => { + functionName(); +} +try { + showAnimation(); + animationData.forEach((obj) => { + assert.equal(document.getElementById(obj.inputVal).textContent, obj.msg); + }); +} finally { + setTimeout = oldSetTimeout; +} +``` + # --seed-- ## --seed-contents-- From 2c8041f2e2f269094e9485b9ca846f8f56974a42 Mon Sep 17 00:00:00 2001 From: Jessica Wilkins <67210629+jdwilkin4@users.noreply.github.com> Date: Mon, 9 Dec 2024 09:02:39 -0800 Subject: [PATCH 153/480] chore(curriculum): remove link lecture video (#57458) --- .../lecture-working-with-links/meta.json | 4 - .../67168343450957aa4335c56b.md | 121 ------------------ 2 files changed, 125 deletions(-) delete mode 100644 curriculum/challenges/english/25-front-end-development/lecture-working-with-links/67168343450957aa4335c56b.md diff --git a/curriculum/challenges/_meta/lecture-working-with-links/meta.json b/curriculum/challenges/_meta/lecture-working-with-links/meta.json index 474d7fe691a0d5..81436421054401 100644 --- a/curriculum/challenges/_meta/lecture-working-with-links/meta.json +++ b/curriculum/challenges/_meta/lecture-working-with-links/meta.json @@ -21,10 +21,6 @@ { "id": "67168323932391a9ee0d3a9e", "title": "What Are the Different Link States, and Why Are They Important?" - }, - { - "id": "67168343450957aa4335c56b", - "title": "What Is the Difference Between Inline and Block-Level Links?" } ], "helpCategory": "HTML-CSS" diff --git a/curriculum/challenges/english/25-front-end-development/lecture-working-with-links/67168343450957aa4335c56b.md b/curriculum/challenges/english/25-front-end-development/lecture-working-with-links/67168343450957aa4335c56b.md deleted file mode 100644 index b92848e3c4cb66..00000000000000 --- a/curriculum/challenges/english/25-front-end-development/lecture-working-with-links/67168343450957aa4335c56b.md +++ /dev/null @@ -1,121 +0,0 @@ ---- -id: 67168343450957aa4335c56b -videoId: nVAaxZ34khk -title: What Is the Difference Between Inline and Block-Level Links? -challengeType: 11 -dashedName: what-is-the-difference-between-inline-and-block-level-links ---- - -# --description-- - -Watch the video and answer the questions below. - -# --questions-- - -## --text-- - -What is the default behavior of an `a` element? - -## --answers-- - -It displays on the same line. - ---- - -It displays on a new line. - -### --feedback-- - -`a` elements are inline elements. - ---- - -It displays on a new page. - -### --feedback-- - -`a` elements are inline elements. - ---- - -It displays before everything else. - -### --feedback-- - -`a` elements are inline elements. - -## --video-solution-- - -1 - -## --text-- - -What is the default behavior of a `p` element? - -## --answers-- - -It displays on the same line. - -### --feedback-- - -`p` elements are block elements. - ---- - -It displays on a new line. - ---- - -It displays on a new page. - -### --feedback-- - -`p` elements are block elements. - ---- - -It displays before everything else. - -### --feedback-- - -`p` elements are block elements. - -## --video-solution-- - -2 - -## --text-- - -How would you make a link display on a new line? - -## --answers-- - -The `a` element will display on a new line automatically. - -### --feedback-- - -You can turn a `p` element into a link by nesting it in the `a` element. - ---- - -Nest a block element, such as `p`, in the `a` element. - ---- - -You can't; links are only able to be inline. - -### --feedback-- - -You can turn a `p` element into a link by nesting it in the `a` element. - ---- - -Ask it really nicely. - -### --feedback-- - -You can turn a `p` element into a link by nesting it in the `a` element. - -## --video-solution-- - -2 From d524fb52f890503d631ea904985523cf7fe683b2 Mon Sep 17 00:00:00 2001 From: Jessica Wilkins <67210629+jdwilkin4@users.noreply.github.com> Date: Mon, 9 Dec 2024 09:08:11 -0800 Subject: [PATCH 154/480] feat(curriculum): adding review JS content to prep exam review page (#57427) Co-authored-by: Zaira <33151350+zairahira@users.noreply.github.com> Co-authored-by: Dario-DC <105294544+Dario-DC@users.noreply.github.com> --- client/i18n/locales/english/intro.json | 3 +- .../6723d3cfdd0717d3f1bf27e3.md | 2848 ++++++++++++++++- .../6723d1f0568292cd394d6fb6.md | 2 +- 3 files changed, 2850 insertions(+), 3 deletions(-) diff --git a/client/i18n/locales/english/intro.json b/client/i18n/locales/english/intro.json index 600d11fc62eb8b..f7558020063ae4 100644 --- a/client/i18n/locales/english/intro.json +++ b/client/i18n/locales/english/intro.json @@ -3279,7 +3279,8 @@ "review-javascript": { "title": "JavaScript Review", "intro": [ - "Review the JavaScript concepts to prepare for the upcoming quiz." + "Before you take the JavaScript prep exam, you will need to review first.", + "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." ] }, "kagw": { "title": "258", "intro": [] }, diff --git a/curriculum/challenges/english/25-front-end-development/review-javascript/6723d3cfdd0717d3f1bf27e3.md b/curriculum/challenges/english/25-front-end-development/review-javascript/6723d3cfdd0717d3f1bf27e3.md index a1b0b00d042257..0d30acfe4862a8 100644 --- a/curriculum/challenges/english/25-front-end-development/review-javascript/6723d3cfdd0717d3f1bf27e3.md +++ b/curriculum/challenges/english/25-front-end-development/review-javascript/6723d3cfdd0717d3f1bf27e3.md @@ -7,9 +7,2855 @@ dashedName: review-javascript # --description-- -Review the concepts below to prepare for the upcoming quiz. +Review the concepts below to prepare for the upcoming prep exam. +## Working with HTML, CSS, and JavaScript + +While HTML and CSS provide website structure, JavaScript brings interactivity to websites by enabling complex functionality, such as handling user input, animating elements, and even building full web applications. + +## Data Types in JavaScript + +Data types help the program understand the kind of data it’s working with, whether it's a number, text, or something else. + +- **Number**: A number represents both integers and floating-point values. Examples of integers include 7, 19, and 90. +- **Floating point**: A floating point number is a number with a decimal point. Examples include 3.14, 0.5, and 0.0001. +- **String**: A string is a sequence of characters, or text, enclosed in quotes. `"I like coding"` and `'JavaScript is fun'` are examples of strings. +- **Boolean**: A boolean represents one of two possible values: `true` or `false`. You can use a boolean to represent a condition, such as `isLoggedin = true`. +- **Undefined and Null**: An undefined value is a variable that has been declared but not assigned a value. A null value is an empty value, or a variable that has intentionally been assigned a value of `null`. +- **Object**: An object is a collection of key-value pairs. The key is the property name, and the value is the property value. + +Here, the `pet` object has three properties or keys: `name`, `age`, and `type`. The values are `Fluffy`, `3`, and `dog`, respectively. + +```js +let pet = { + name: 'Fluffy', + age: 3, + type: 'dog' +}; +``` + +- **Symbol**: The Symbol data type is a unique and immutable value that may be used as an identifier for object properties. + +In this example below, two symbols are created with the same description, but they are not equal. + +```js +const crytpicKey1= Symbol('saltNpepper'); +const crytpicKey2= Symbol('saltNpepper'); +console.log(crytpicKey1 === crytpicKey2); // false +``` + +- **BigInt**: When the number is too large for the `Number` data type, you can use the BigInt data type to represent integers of arbitrary length. + +By adding an `n` to the end of the number, you can create a BigInt. + +```js +const veryBigNumber = 1234567890123456789012345678901234567890n; +``` + +## Variables in JavaScript + +- Variables can be declared using the `let` keyword. + +```js +let cityName; +``` + +- To assign a value to a variable, you can use the assignment operator `=`. + +```js +cityName = 'New York'; +``` + +- Variables declared using `let` can be reassigned a new value. + +```js +cityName = 'Los Angeles'; +console.log(cityName); // Los Angeles +``` + +- Apart from `let`, you can also use `const` to declare a variable. However, a `const` variable cannot be reassigned a new value. + +```js +const cityName = 'New York'; +cityName = 'Los Angeles'; // TypeError: Assignment to constant variable. +``` + +- Variables declared using `const` find uses in declaring constants, that are not allowed to change throughout the code, such as `PI` or `MAX_SIZE`. + +## Variable Naming Conventions + +- Variable names should be descriptive and meaningful. +- Variable names should be camelCase like `cityName`, `isLoggedin`, and `veryBigNumber`. +- Variable names should not start with a number. They must begin with a letter, `_`, or `$`. +- Variable names should not contain spaces or special characters, except for `_` and `$`. +- Variable names should not be reserved keywords. +- Variable names are case-sensitive. `age` and `Age` are different variables. + +## Strings and String immutability in JavaScript + +- Strings are sequences of characters enclosed in quotes. They can be created using single quotes and double quotes. + +```js +let correctWay = 'This is a string'; +let alsoCorrect = "This is also a string"; +``` + +- Strings are immutable in JavaScript. This means that once a string is created, you cannot change the characters in the string. However, you can still reassign strings to a new value. + +```js +let firstName = 'John'; +firstName = 'Jane'; // Reassigning the string to a new value +``` + +## String Concatenation in JavaScript + +- Concatenation is the process of joining multiple strings or combining strings with variables that hold text. The `+` operator is one of the simplest and most frequently used methods to concatenate strings. + +```js +let studentName = 'Asad'; +let studentAge = 25; +let studentInfo = studentName + ' is ' + studentAge + ' years old.'; +console.log(studentInfo); // Asad is 25 years old. +``` + +- If you need to add or append to an existing string, then you can use the `+=` operator. This is helpful when you want to build upon a string by adding more text to it over time. + +```js +let message = 'Welcome to programming, '; +message += 'Asad!'; +console.log(message); // Welcome to programming, Asad! +``` + +- Another way you can concatenate strings is to use the `concat()` method. This method joins two or more strings together. + +```js +let firstName = 'John'; +let lastName = 'Doe'; +let fullName = firstName.concat(' ', lastName); +console.log(fullName); // John Doe +``` + +## Logging Messages with `console.log()` + +- The `console.log()` method is used to log messages to the console. It's a helpful tool for debugging and testing your code. + +```js +console.log('Hello, World!'); +// Output: Hello, World! +``` + +## Semicolons in JavaScript + +- Semicolons are primarily used to mark the end of a statement. This helps the JavaScript engine understand the separation of individual instructions, which is crucial for correct execution. + +```js +let message = 'Hello, World!'; // first statement ends here +let number = 42; // second statement starts here +``` + +- Semicolons help prevent ambiguities in code execution and ensure that statements are correctly terminated. + +## Comments in JavaScript + +- Any line of code that is commented out is ignored by the JavaScript engine. Comments are used to explain code, make notes, or temporarily disable code. +- Single line comments are created using `//`. + +```js +// This is a single line comment and will be ignored by the JavaScript engine +``` + +- Multi-line comments are created using `/*` to start the comment and `*/` to end the comment. + +```js +/* +This is a multi-line comment. +It can span multiple lines. +*/ +``` + +## JavaScript as a Dynamically Typed Language + +- JavaScript is a dynamically typed language, which means that you don't have to specify the data type of a variable when you declare it. The JavaScript engine automatically determines the data type based on the value assigned to the variable. + +```js +let error = 404; // JavaScript treats error as a number +error = "Not Found"; // JavaScript now treats error as a string +``` + +- Other languages, like Java, that are not dynamically typed would result in an error: + +```js +int error = 404; // value must always be an integer +error = "Not Found"; // This would cause an error in Java +``` + +## Using the `typeof` Operator + +- The `typeof` operator is used to check the data type of a variable. It returns a string indicating the type of the variable. + +```js +let age = 25; +console.log(typeof age); // number + +let isLoggedin = true; +console.log(typeof isLoggedin); // boolean +``` + +- However, there’s a well-known quirk in JavaScript when it comes to null. The `typeof` operator returns `object` for null values. + +```js +let user = null; +console.log(typeof user); // object +``` + +## String Basics + +- **Definition**: A string is a sequence of characters wrapped in either single quotes, double quotes or backticks. Strings are primitive data types and they are immutable. Immutability means that once a string is created, it cannot be changed. +- **Accessing Characters from a String**: To access a character from a string you can use bracket notation and pass in the index number. An index is the position of a character within a string, and it is zero-based. + +```js +const developer = "Jessica"; +developer[0] // J +``` + +- **`\n` (Newline Character)**: You can create a newline in a string by using the `\n` newline character. + +```js +const poem = "Roses are red,\nViolets are blue,\nJavaScript is fun,\nAnd so are you."; +console.log(poem); +``` + +- **Escaping Strings**: You can escape characters in a string by placing backlashes (`\`) in front of the quotes. + +```js +const statement = "She said, \"Hello!\""; +console.log(statement); // She said, "Hello!" +``` + +## Template Literals (Template Strings) and String Interpolation + +- **Definition**: Template literals are defined with backticks (`). They allow for easier string manipulation, including embedding variables directly inside a string, a feature known as string interpolation. + +```js +const name = "Jessica"; +const greeting = `Hello, ${name}!`; // "Hello, Jessica!" +``` + +## ASCII, the `charCodeAt()` Method and the `fromCharCode()` Method + +- **ASCII**: ASCII, short for American Standard Code for Information Interchange, is a character encoding standard used in computers to represent text. It assigns a numeric value to each character, which is universally recognized by machines. +- **The `charCodeAt()` Method**: This method is called on a string and returns the ASCII code of the character at a specified index. + +```js +const letter = "A"; +console.log(letter.charCodeAt(0)); // 65 +``` + +- **The `fromCharCode()` Method**: This method converts an ASCII code into its corresponding character. + +```js +const char = String.fromCharCode(65); +console.log(char); // A +``` + +## Other Common String Methods + +- **The `indexOf` Method**: This method is used to search for a substring within a string. If the substring is found, `indexOf` returns the index (or position) of the first occurrence of that substring. If the substring is not found, `indexOf` returns -1, which indicates that the search was unsuccessful. +- **The `includes()` Method**: This method is used to check if a string contains a specific substring. If the substring is found within the string, the method returns true otherwise, it returns false. +- **The `slice()` Method**: This method extracts a portion of a string and returns a new string, without modifying the original string. It takes two parameters: the starting index and the optional ending index. +- **The `toUpperCase()` Method**: This method converts all the characters to uppercase letters and returns a new string with all uppercase characters. +- **The `toLowerCase()` Method**: This method converts all characters in a string to lowercase. +- **The `replace()` Method**: This method is used to find a specified value (like a word or character) in a string and replace it with another value. +- **The `repeat()` Method**: This method is used to repeat a string a specified number of times. +- **The `trim()` Method**: This method is used to remove whitespace from both the beginning and the end of a string. +- **The `trimStart()` Method**: This method removes whitespace from the beginning (or "start") of the string. +- **The `trimEnd()` Method**: This method removes whitespace from the end of the string. +- **The `prompt()` Method**: This method is used to get information from a user through the form of a dialog box. This method takes two arguments. The first argument is the message which will appear inside the dialog box, typically prompting the user to enter information. And the second one is a default value which is optional and will fill the input field initially. + +## Working with the Number Data Type + +- **Definition**: JavaScript's `Number` type includes integers, floating-point numbers, `Infinity` and `NaN`. Floating-point numbers are numbers with a decimal point. Positive `Infinity` is a number greater than any other number while `-Infinity` is a number smaller than any other number. `NaN` (`Not a Number`) represents an invalid numeric value like the string `"Jessica"`. + +## Common Arithmetic Operations + +- **Addition Operator**: This operator (`+`) is used to calculate the sum of two or more numbers. +- **Subtraction Operator**: This operator (`-`) is used to calculate the difference between two numbers. +- **Multiplication Operator**: This operator (`*`) is used to calculate the product of two or more numbers. +- **Division Operator**: This operator (`/`) is used to calculate the quotient between two numbers +- **Division By Zero**: If you try to divide by zero, JavaScript will return `Infinity`. +- **Remainder Operator**: This operator(`%`) returns the remainder of a division. +- **Exponentiation Operator**: This operator (`**`) raises one number to the power of another. + +## Calculations with Numbers and Strings + +- **Explanation**: When you use the `+` operator with a number and a string, JavaScript will coerce the number into a string and concatenate the two values. When you use the `-`, `*` or `/` operators with a string and number, JavaScript will coerce the string into a number and the result will be a number. For `null` and `undefined`, JavaScript treats `null` as 0 and undefined as `NaN` in mathematical operations. + +```js +const result = 5 + '10'; + +console.log(result); // 510 +console.log(typeof result); // string + +const subtractionResult = '10' - 5; +console.log(subtractionResult); // 5 +console.log(typeof subtractionResult); // number + +const multiplicationResult = '10' * 2; +console.log(multiplicationResult); // 20 +console.log(typeof multiplicationResult); // number + +const divisionResult = '20' / 2; +console.log(divisionResult); // 10 +console.log(typeof divisionResult); // number + +const result1 = null + 5; +console.log(result1); // 5 +console.log(typeof result1); // number + +const result2 = undefined + 5; +console.log(result2); // NaN +console.log(typeof result2); // number +``` + +## Operator Precedence + +- **Definition**: Operator precedence determines the order in which operations are evaluated in an expression. Operators with higher precedence are evaluated before those with lower precedence. Values inside the parenthesis will be evaluated first and multiplication/division will have higher precedence then addition/subtraction. If the operators have the same precedence, then JavaScript will use associativity. Associativity is what tells JavaScript whether to evaluate operators from left to right or right to left. For example, the exponent operator is also right to left associative: + +```js +const result = (2 + 3) * 4; + +console.log(result); // 20 + +const result2 = 10 - 2 + 3; + +console.log(result2); // 11 + +const result3 = 2 ** 3 ** 2; + +console.log(result3); // 512 +``` + +## Increment and Decrement Operators + +- **Increment Operator**: This operator is used to increase the value by one. The prefix notation `++num` increases the value of the variable first, then returns a new value. The postfix notation `num++` returns the current value of the variable first, then increases it. + +```js +let x = 5; + +console.log(++x); // 6 +console.log(x); // 6 + + +let y = 5; + +console.log(y++); // 5 +console.log(y); // 6 +``` + +- **Decrement Operator**: This operator is used to decrease the value by one. The prefix and postfix notation work the same way as earlier with the increment operator. + +```js +let num = 5; + +console.log(--num); // 4 +console.log(num--); // 4 +console.log(num); // 3 +``` + +## Compound Assignment Operators + +- **Addition Assignment (`+=`) Operator**: This operator performs addition on the values and assigns the result to the variable. +- **Subtraction Assignment (`-=`) Operator**: This operator performs subtraction on the values and assigns the result to the variable. +- **Multiplication Assignment (`*=`) Operator**: This operator performs multiplication on the values and assigns the result to the variable. +- **Division Assignment (`/=`) Operator**: This operator performs division on the values and assigns the result to the variable. +- **Remainder Assignment (`%=`) Operator**: This operator divides a variable by the specified number and assigns the remainder to the variable. +- **Exponentiation Assignment (`**=`) Operator**: This operator raises a variable to the power of the specified number and reassigns the result to the variable. + +## Booleans and Equality + +- **Boolean Definition**: A boolean is a data type that can only have two values: `true` or `false`. +- **Equality (`==`) Operator**: This operator uses type coercion before checking if the values are equal. + +```js +console.log(5 == '5'); // true +``` + +- **Strict Equality (`===`) Operator**: This operator does not perform type coercion and checks if both the types and values are equal. + +```js +console.log(5 === '5'); // false +``` + +- **Inequality (`!=`) Operator**: This operator uses type coercion before checking if the values are not equal. +- **Strict Inequality (`!==`) Operator**: This operator does not perform type coercion and checks if both the types and values are not equal. + +## Comparison Operators + +- **Greater Than (`>`) Operator**: This operator checks if the value on the left is greater than the one on the right. +- **Greater Than (`>=`) or Equal Operator**: This operator checks if the value on the left is greater than or equal to the one on the right. +- **Less Than (`<`) Operator**: This operator checks if the value on the left is less than the one on the right. +- **Less Than (`<=`) or Equal Operator**: This operator checks if the value on the left is less than or equal to the one on the right. + +## Unary Operators + +- **Unary Plus Operator**: This operator converts its operand into a number. If the operand is already a number, it remains unchanged. + +```js +const str = '42'; +const num = +str; + +console.log(num); // 42 +console.log(typeof num); // number +``` + +- **Unary Negation (`-`) Operator**: This operator negates the operand. + +```js +const num = 4; +console.log(-num); // -4 +``` + +- **Logical NOT (`!`) Operator**: This operator flips the boolean value of its operand. So, if the operand is `true`, it becomes `false`, and if it’s `false`, it becomes `true`. + +## Bitwise Operators + +- **Bitwise AND (`&`) Operator**: This operator returns a 1 in each bit position for which the corresponding bits of both operands are 1. +- **Bitwise AND Assignment (`&=`) Operator**: This operator performs a `bitwise AND` operation with the specified number and reassigns the result to the variable. +- **Bitwise OR (`|`) Operator**: This operator returns a 1 in each bit position for which the corresponding bits of either or both operands are 1. +- **Bitwise OR Assignment (`|=`) Operator**: This operator performs a `bitwise OR` operation with the specified number and reassigns the result to the variable. +- **Bitwise XOR (`^`) Operator**: This operator returns a 1 in each bit position for which the corresponding bits of either, but not both, operands are 1. +- **Bitwise NOT (`~`) Operator**: This operator inverts the binary representation of a number. +- **Left Shift (`<<`) Operator**: This operator shifts all bits to the left by a specified number of positions. +- **Right Shift (`>>`) Operator**: This operator shifts all bits to the right. + +## Conditional Statements, Truthy Values, Falsy Values and the Ternary Operator + +- **`if/else if/else`**: An `if` statement takes a condition and runs a block of code if that condition is `truthy`. If the condition is `false`, then it moves to the `else if` block. If none of those conditions are `true`, then it will execute the `else` clause. `Truthy` values are any values that result in `true` when evaluated in a Boolean context like an `if` statement. `Falsy` values are values that evaluate to `false` in a Boolean context. + +```js +const score = 87; + +if (score >= 90) { + console.log('You got an A'); +} else if (score >= 80) { + console.log('You got a B'); // You got an B +} else if (score >= 70) { + console.log('You got a C'); +} else { + console.log('You failed! You need to study more!'); +} +``` + +- **Ternary Operator**: This operator is often used as a shorter way to write `if else` statements. + +```js +const temperature = 30; +const weather = temperature > 25 ? 'sunny' : 'cool'; + +console.log(`It's a ${weather} day!`); // It's a sunny day! +``` + +## Binary Logical Operators + +- **Logical AND (`&&`) Operator**: This operator checks if both operands are truthy. If the first value is truthy, then it will return the second value. If the first value is falsy, then it will return the first value. + +```js +const result = true && 'hello'; + +console.log(result); // hello +``` + +- **Logical OR (`||`) Operator**: This operator checks if at least one of the operands is truthy. If the first value is truthy, then it is returned. If the first value is falsy, then the second value is returned. +- **Nullish Coalescing (`??`) Operator**: This operator will return a value only if the first one is `null` or `undefined`. + +```js +const userSettings = { + theme: null, + volume: 0, + notifications: false, +}; + +let theme = userSettings.theme ?? 'light'; +console.log(theme); // light +``` + +## The `Math` Object + +- **The `Math.random()` Method**: This method generates a random floating-point number between 0 (inclusive) and 1 (exclusive). This means the possible output can be 0, but it will never actually reach 1. +- **The `Math.max()` Method**: This method takes a set of numbers and returns the maximum value. +- **The `Math.min()` Method**: This method takes a set of numbers and returns the minimum value. +- **The `Math.ceil()` Method**: This method rounds a value up to the nearest whole integer. +- **The `Math.floor()` Method**: This method rounds a value down to the nearest whole integer. +- **The `Math.round()` Method**: This method rounds a value to the nearest whole integer. + +```js +console.log(Math.round(2.3)); // 2 +console.log(Math.round(4.5)); // 5 +console.log(Math.round(4.8)); // 5 +``` + +- **The `Math.trunc()` Method**: This method removes the decimal part of a number, returning only the integer portion, without rounding. +- **The `Math.sqrt()` Method**: This method will return the square root of a number. +- **The `Math.cbrt()` Method**: This method will return the cube root of a number. +- **The `Math.abs()` Method**: This method will return the absolute value of a number. +- **The `Math.pow()` Method**: This method takes two numbers and raise the first to the power of the second. + +## Common Number Methods + +- **`isNaN()`**: `NaN` stands for "Not-a-Number". It's a special value that represents an unrepresentable or undefined numerical result. The `isNaN()` function property is used to determine whether a value is `NaN` or not. `Number.isNaN()` provides a more reliable way to check for `NaN` values, especially in cases where type coercion might lead to unexpected results with the global `isNaN()` function. + +```js +console.log(isNaN(NaN)); // true +console.log(isNaN(undefined)); // true +console.log(isNaN({})); // true + +console.log(isNaN(true)); // false +console.log(isNaN(null)); // false +console.log(isNaN(37)); // false + + +console.log(Number.isNaN(NaN)); // true +console.log(Number.isNaN(Number.NaN)); // true +console.log(Number.isNaN(0 / 0)); // true + +console.log(Number.isNaN("NaN")); // false +console.log(Number.isNaN(undefined)); // false +``` + +- **The `parseFloat()` Method**: This method parses a string argument and returns a floating-point number. It's designed to extract a number from the beginning of a string, even if the string contains non-numeric characters later on. +- **The `parseInt()` Method**: This method parses a string argument and returns an integer. `parseInt()` stops parsing at the first non-digit it encounters. For floating-point numbers, it returns only the integer part. If it can't find a valid integer at the start of the string, it returns `NaN`. +- **The `toFixed()` Method**: This method is called on a number and takes one optional argument, which is the number of digits to appear after the decimal point. It returns a string representation of the number with the specified number of decimal places. + +## Comparisons and the `null` and `undefined` Data Types + +- **Comparisons and `undefined`**: A variable is `undefined` when it has been declared but hasn't been assigned a value. It's the default value of uninitialized variables and function parameters that weren't provided an argument. `undefined` converts to `NaN` in numeric contexts, which makes all numeric comparisons with `undefined` return `false`. + +```js +console.log(undefined > 0); // false +console.log(undefined < 0); // false +console.log(undefined == 0); // false +``` + +- **Comparisons and `null`**: The `null` type represents the intentional absence of a value. When using the equality operator, `null` and `undefined` are considered equal. However, when using the strict equality operator (`===`), which checks both value and type without performing type coercion, `null` and `undefined` are not equal: + +```js +console.log(null == undefined); // true +console.log(null === undefined); // false +``` + +## `switch` Statements + +- **Definition**: A `switch` statement evaluates an expression and matches its value against a series of `case` clauses. When a match is found, the code block associated with that case is executed. + +```js +const dayOfWeek = 3; + +switch (dayOfWeek) { + case 1: + console.log("It's Monday! Time to start the week strong."); + break; + case 2: + console.log("It's Tuesday! Keep the momentum going."); + break; + case 3: + console.log("It's Wednesday! We're halfway there."); + break; + case 4: + console.log("It's Thursday! Almost the weekend."); + break; + case 5: + console.log("It's Friday! The weekend is near."); + break; + case 6: + console.log("It's Saturday! Enjoy your weekend."); + break; + case 7: + console.log("It's Sunday! Rest and recharge."); + break; + default: + console.log("Invalid day! Please enter a number between 1 and 7."); +} +``` + +## JavaScript Functions + +- Functions are reusable blocks of code that perform a specific task. +- Functions can be defined using the `function` keyword followed by a name, a list of parameters, and a block of code that performs the task. +- Arguments are values passed to a function when it is called. +- When a function finishes its execution, it will always return a value. +- By default the return value of a function is `undefined`. +- The `return` keyword is used to specify the value to be returned from the function and ends the function execution. + +## Arrow Functions + +- Arrow functions are a more concise way to write functions in JavaScript. +- Arrow functions are defined using the `=>` syntax between the parameters and the function body. +- When defining an arrow function, you do not need the `function` keyword. +- If you are using a single parameter, you can omit the parentheses around the parameter list. +- If the function body consists of a single expression, you can omit the curly braces and the `return` keyword. + +## Scope in Programming + +- **Global scope**: This is the outermost scope in JavaScript. Variables declared in the global scope are accessible from anywhere in the code and are called global variables. +- **Local scope**: This is refers to variables declared within a function. These variables are only accessible within the function where they are declared and are called local variables. +- **Block scope**: A block is a set of statements enclosed in curly braces `{}` such as in `if` statements, or loops. +- Block scoping with `let` and `const` provides even finer control over variable accessibility, helping to prevent errors and make your code more predictable. + +## JavaScript Array Basics + +- **Definition**: A JavaScript array is an ordered collection of values, each identified by a numeric index. The values in a JavaScript array can be of different data types, including numbers, strings, booleans, objects, and even other arrays. Arrays are contiguous in memory, which means that all elements are stored in a single, continuous block of memory locations, allowing for efficient indexing and fast access to elements by their index. + +```js +const developers = ["Jessica", "Naomi", "Tom"]; +``` + +- **Accessing Elements From Arrays**: To access elements from an array, you will need to reference the array followed by its index number inside square brackets. JavaScript arrays are zero based indexed which means the first element is at index 0, the second element is at index 1, etc. If you try to access an index that doesn't exist for the array, then JavaScript will return `undefined`. + +```js +const developers = ["Jessica", "Naomi", "Tom"]; +developers[0] // "Jessica" +developers[1] // "Naomi" + +developers[10] // undefined +``` + +- **`length` Property**: This property is used to return the number of items in a array. + +```js +const developers = ["Jessica", "Naomi", "Tom"]; +developers.length // 3 +``` + +- **Updating Elements in an Array**: To update an element in an array, you use the assignment operator (`=`) to assign a new value to the element at a specific index. + +```js +const fruits = ['apple', 'banana', 'cherry']; +fruits[1] = 'blueberry'; + +console.log(fruits); // ['apple', 'blueberry', 'cherry'] +``` + +## Two Dimensional Arrays + +- **Definition**: A two-dimensional array is essentially an array of arrays. It's used to represent data that has a natural grid-like structure, such as a chessboard, a spreadsheet, or pixels in an image. To access an element in a two-dimensional array, you need two indices: one for the row and one for the column. + +```js +const chessboard = [ + ['R', 'N', 'B', 'Q', 'K', 'B', 'N', 'R'], + ['P', 'P', 'P', 'P', 'P', 'P', 'P', 'P'], + [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '], + [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '], + [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '], + [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '], + ['p', 'p', 'p', 'p', 'p', 'p', 'p', 'p'], + ['r', 'n', 'b', 'q', 'k', 'b', 'n', 'r'] +]; + +console.log(chessboard[0][3]); // "Q" +``` + +## Array Destructuring + +- **Definition**: Array destructuring is a feature in JavaScript that allows you to extract values from arrays and assign them to variables in a more concise and readable way. It provides a convenient syntax for unpacking array elements into distinct variables. + +```js +const fruits = ["apple", "banana", "orange"]; + +const [first, second, third] = fruits; + +console.log(first); // "apple" +console.log(second); // "banana" +console.log(third); // "orange" +``` + +- **Rest Syntax**: This allows you to capture the remaining elements of an array that haven’t been destructured into a new array. + +```js +const fruits = ["apple", "banana", "orange", "mango", "kiwi"]; +const [first, second, ...rest] = fruits; + +console.log(first); // "apple" +console.log(second); // "banana" +console.log(rest); // ["orange","mango","kiwi"] +``` + +## Common Array Methods + +- **`push()` Method**: This method is used to add elements to the end of the array and will return the new length. + +```js +const desserts = ["cake", "cookies", "pie"]; +desserts.push("ice cream"); + +console.log(desserts); // ["cake", "cookies", "pie", "ice cream"]; +``` + +- **`pop()` Method**: This method is used to remove the last element from an array and will return that removed element. If the array is empty, then the return value will be `undefined`. + +```js +const desserts = ["cake", "cookies", "pie"]; +desserts.pop(); + +console.log(desserts); // ["cake", "cookies"]; +``` + +- **`shift()` Method**: This method is used to remove the first element from an array and return that removed element. If the array is empty, then the return value will be `undefined`. + +```js +const desserts = ["cake", "cookies", "pie"]; +desserts.shift(); + +console.log(desserts); // ["cookies", "pie"]; +``` + +- **`unshift()` Method**: This method is used to add elements to the beginning of the array and will return the new length. + +```js +const desserts = ["cake", "cookies", "pie"]; +desserts.unshift("ice cream"); + +console.log(desserts); // ["ice cream", "cake", "cookies", "pie"]; +``` + +- **`indexOf()` Method**: This method is useful for finding the first index of a specific element within an array. If the element cannot be found, then it will return -1. + +```js +const fruits = ["apple", "banana", "orange", "banana"]; +const index = fruits.indexOf("banana"); + +console.log(index); // 1 +console.log(fruits.indexOf("not found")); // -1 +``` + +- **`splice()` Method**: This method is used to add or remove elements from any position in an array. The return value for the `splice()` method will be an array of the items removed from the array. If nothing was removed, then an empty array will be returned. This method will mutate the original array, modifying it in place rather than creating a new array. The first argument specifies the index at which to begin modifying the array. The second argument are the number of elements you wish to remove. The following arguments are the elements you wish to add. + +```js +const colors = ["red", "green", "blue"]; +colors.splice(1, 0, "yellow", "purple"); + +console.log(colors); // ["red", "yellow", "purple", "green", "blue"] +``` + +- **`includes()` Method**: This method is used to check if an array contains a specific value. This method returns `true` if the array contains the specified element, and `false` otherwise. + +```js +const programmingLanguages = ["JavaScript", "Python", "C++"]; + +console.log(programmingLanguages.includes("Python")); // true +console.log(programmingLanguages.includes("Perl")); // false +``` + +- **`concat()` Method**: This method creates a new array by merging two or more arrays. + +```js +const programmingLanguages = ["JavaScript", "Python", "C++"]; +const newList = programmingLanguages.concat("Perl"); + +console.log(newList); // ["JavaScript", "Python", "C++", "Perl"] +``` + +- **`slice()` Method**: This method returns a shallow copy of a portion of the array at a specified index or the entire array. A shallow copy will copy the reference to the array instead of duplicating it. + +```js +const programmingLanguages = ["JavaScript", "Python", "C++"]; +const newList = programmingLanguages.slice(1); + +console.log(newList); // ["Python", "C++"] +``` + +- **Spread Syntax**: The spread syntax is used to create shallow copies of an array. + +```js +const originalArray = [1, 2, 3]; +const shallowCopiedArray = [...originalArray]; + +shallowCopiedArray.push(4); + +console.log(originalArray); // [1, 2, 3] +console.log(shallowCopiedArray); // [1, 2, 3, 4] +``` + +- **`split()` Method**: This method divides a string into an array of substrings and specifies where each split should happen based on a given separator. If no separator is provided, the method returns an array containing the original string as a single element. + +```js +const str = "hello"; +const charArray = str.split(""); + +console.log(charArray); // ["h","e","l","l","o"] +``` + +- **`reverse()` Method**: This method reverses an array in place. + +```js +const desserts = ["cake", "cookies", "pie"]; +console.log(desserts.reverse()); // ["pie","cookies","cake"] +``` + +- **`join()` Method**: This method concatenates all the elements of an array into a single string, with each element separated by a specified separator. If no separator is provided, or an empty string (`""`) is used, the elements will be joined without any separator. + +```js +const reversedArray = ["o", "l", "l", "e", "h"]; +const reversedString = reversedArray.join(""); + +console.log(reversedString); // "olleh" +``` + +## Object Basics + +- **Definition**: An object is a data structure that is made up of properties. A property consists of a key and a value. To access data from an object you can use either dot notation or bracket notation. + +```js +const person = { + name: "Alice", + age: 30, + city: "New York" +}; + +console.log(person.name); // Alice +console.log(person["name"]); // Alice +``` + +To set a property of an existing object you can use either dot notation or bracket notation together with the assignment operator. + +```js +const person = { + name: "Alice", + age: 30 +}; + +person.job = "Engineer" +person["hobby"] = "Knitting" +console.log(person); // {name: 'Alice', age: 30, job: 'Engineer', hobby: 'Knitting'} +``` + +## Removing Properties From an Object + +- **`delete` Operator**: This operator is used to remove a property from an object. + +```js +const person = { + name: "Alice", + age: 30, + job: "Engineer" +}; + +delete person.job; + +console.log(person.job); // undefined +``` + +## Checking if an Object has a Property + +- **`hasOwnProperty()` Method**: This method returns a boolean indicating whether the object has the specified property as its own property. + +```js +const person = { + name: "Alice", + age: 30 +}; + +console.log(person.hasOwnProperty("name")); // true +console.log(person.hasOwnProperty("job")); // false +``` + +- **`in` Operator**: This operator will return `true` if the property exists in the object. + +```js +const person = { + name: "Bob", + age: 25 +}; + +console.log("name" in person); // true +``` + +## Accessing Properties From Nested Objects + +- **Accessing Data**: Accessing properties from nested objects involves using the dot notation or bracket notation, much like accessing properties from simple objects. However, you'll need to chain these accessors to drill down into the nested structure. + +```js +const person = { + name: "Alice", + age: 30, + contact: { + email: "alice@example.com", + phone: { + home: "123-456-7890", + work: "098-765-4321" + } + } +}; + +console.log(person.contact.phone.work); // "098-765-4321" +``` + +## Primitive and Non Primitive Data Types + +- **Primitive Data Types**: These data types include numbers, strings, booleans, `null`, `undefined`, and symbols. These types are called "primitive" because they represent single values and are not objects. Primitive values are immutable, which means once they are created, their value cannot be changed. +- **Non Primitive Data Types**: In JavaScript, these are objects, which include regular objects, arrays, and functions. Unlike primitives, non-primitive types can hold multiple values as properties or elements. + +## Object Methods + +- **Definition**: Object methods are functions that are associated with an object. They are defined as properties of an object and can access and manipulate the object's data. The `this` keyword inside the method refers to the object itself, enabling access to its properties. + +```js +const person = { + name: "Bob", + age: 30, + sayHello: function() { + return "Hello, my name is " + this.name; + } +}; + +console.log(person.sayHello()); // "Hello, my name is Bob" +``` + +## Object Constructor + +- **Definition**: In JavaScript, a constructor is a special type of function used to create and initialize objects. It is invoked with the `new` keyword and can initialize properties and methods on the newly created object. The `Object()` constructor creates a new empty object. + +```js +new Object() +``` + +## Working with the Optional Chaining Operator (`?.`) + +- **Definition**: This operator lets you safely access object properties or call methods without worrying whether they exist. + +```js +const user = { + name: "John", + profile: { + email: "john@example.com", + address: { + street: "123 Main St", + city: "Somewhere" + } + } +}; + +console.log(user.profile?.address?.street); // "123 Main St" +console.log(user.profile?.phone?.number); // undefined +``` + +## Object Destructuring + +- **Definition**: Object destructuring allows you to extract values from objects and assign them to variables in a more concise and readable way. + +```js +const person = { name: "Alice", age: 30, city: "New York" }; + +const { name, age } = person; + +console.log(name); // Alice +console.log(age); // 30 +``` + +## Working with JSON + +- **Definition**: JSON stands for JavaScript Object Notation. It is a lightweight, text-based data format that is commonly used to exchange data between a server and a web application. + +```js +{ + "name": "Alice", + "age": 30, + "isStudent": false, + "list of courses": ["Mathematics", "Physics", "Computer Science"] +} +``` + +- **`JSON.stringify()`**: This method is used to convert a JavaScript object into a JSON string. This is useful when you want to store or transmit data in a format that can be easily shared or transferred between systems. + +```js +const user = { + name: "John", + age: 30, + isAdmin: true +}; + +const jsonString = JSON.stringify(user); +console.log(jsonString); // '{"name":"John","age":30,"isAdmin":true}' +``` + +- **`JSON.parse()`**: This method converts a JSON string back into a JavaScript object. This is useful when you retrieve JSON data from a web server or from localStorage and you need to manipulate the data in your application. + +```js +const jsonString = '{"name":"John","age":30,"isAdmin":true}'; +const userObject = JSON.parse(jsonString); + +// result: { name: 'John', age: 30, isAdmin: true } +console.log(userObject); +``` + + +## Working with Loops + +- **`for` Loop**: This type of loop is used to repeat a block of code a certain number of times. This loop is broken up into three parts: initialization statement, condition, and the increment/decrement statement. The initialization statement is executed before the loop starts. It is typically used to initialize a counter variable. The condition is evaluated before each iteration of the loop. An iteration is a single pass through the loop. If the condition is `true`, the code block inside the loop is executed. If the condition is `false`, the loop stops and you move on to the next block of code. The increment/decrement statement is executed after each iteration of the loop. It is typically used to increment or decrement the counter variable. + +```js +for (let i = 0; i < 5; i++) { + console.log(i); +} +``` + +- **`for...of` Loop**: This type of loop is used when you need to loop over values from an iterable. Examples of iterables would be arrays, and strings. + +```js +const numbers = [1, 2, 3, 4, 5]; + +for (const num of numbers) { + console.log(num); +} +``` + +- **`for...in` Loop**: This type of loop is best used when you need to loop over the properties of an object. This loop will iterate over all enumerable properties of an object, including inherited properties and non-numeric properties. + +```js +const fruit = { + name: 'apple', + color: 'red', + price: 0.99 +}; + +for (const prop in fruit) { + console.log(fruit[prop]); +} +``` + +- **`while` Loop**: This type of loop will run a block of code as long as the condition is `true`. + +```js +let i = 5; + +while (i > 0) { + console.log(i); + i--; +} +``` + +- **`do...while` Loop**: This type of loop will execute the block of code at least once before checking the condition. + +```js +let userInput; + +do { + userInput = prompt("Please enter a number between 1 and 10"); +} while (Number(userInput) < 1 || Number(userInput) > 10); + +alert("You entered a valid number!"); +``` + +## `break` and `continue` Statements + +- **Definition**: A `break` statement is used to exit a loop early, while a `continue` statement is used to skip the current iteration of a loop and move to the next one. + +```js +// Example of break statement +for (let i = 0; i < 10; i++) { + if (i === 5) { + break; + } + console.log(i); +} + +// Output: 0, 1, 2, 3, and 4 + +// Example of continue statement +for (let i = 0; i < 10; i++) { + if (i === 5) { + continue; + } + console.log(i); +} + +// Output: 0, 1, 2, 3, 4, 6, 7, 8, and 9 +``` + +## String Constructor and `toString()` Method + +- **Definition**: A string object is used to represent a sequence of characters. String objects are created using the `String` constructor function, which wraps the primitive value in an object. + +```js +const greetingObject = new String("Hello, world!"); + +console.log(typeof greetingObject); // "object" +``` + +- **`toString()` Method**: This method converts a value to its string representation. It is a method you can use for numbers, booleans, arrays, and objects. + +```js +const num = 10; +console.log(num.toString()); // "10" + +const arr = [1, 2, 3]; +console.log(arr.toString()); // "1,2,3" +``` + +This method accepts an optional radix which is a number from 2 to 36. This radix represents the base, such as base 2 for binary or base 8 for octal. If the radix is not specified, it defaults to base 10, which is decimal. + + +```js +const num = 10; +console.log(num.toString(2)); // "1010"(binary) +``` + +## Number Constructor + +- **Definition**: The `Number` constructor is used to create a number object. The number object contains a few helpful properties and methods like the `isNaN` and `toFixed` method. Most of the time, you will be using the `Number` constructor to convert other data types to the number data type. + +```js +const myNum = new Number("34"); +console.log(typeof myNum); // "object" + +const num = Number('100'); +console.log(num); // 100 + +console.log(typeof num); // number +``` + +## Best Practices for Naming Variables and Functions + +- **camelCasing**: By convention, JavaScript developers will use camel casing for naming variables and functions. Camel casing is where the first word is all lowercase and the following words start with a capital letter. Ex. `isLoading`. + +- **Naming Booleans**: For boolean variables, it's a common practice to use prefixes such as "is", "has", or "can". + +```js +let isLoading = true; +let hasPermission = false; +let canEdit = true; +``` + +- **Naming Functions**: For functions, the name should clearly indicate what the function does. For functions that return a boolean (often called predicates), you can use the same "is", "has", or "can" prefixes. When you have functions that retrieve data, it is common to start with the word "get". When you have functions that set data, it is common start with the word "set". For event handler functions, you might prefix with "handle" or suffix with "Handler". + +```js +function getUserData() { /* ... */ } + +function isValidEmail(email) { /* ... */ } + +function getProductDetails(productId) { /* ... */ } + +function setUserPreferences(preferences) { /* ... */ } + +function handleClick() { /* ... */ } +``` + +- **Naming Variables Inside Loops**: When naming iterator variables in loops, it's common to use single letters like `i`, `j`, or `k`. + +```js +for (let i = 0; i < array.length; i++) { /* ... */ } +``` + +## Working with Sparse Arrays + +- **Definition**: It is possible to have arrays with empty slots. Empty slots are defined as slots with nothing in them. This is different than array slots with the value of `undefined`. These types of arrays are known as sparse arrays. + +```js +const sparseArray = [1, , , 4]; +console.log(sparseArray.length); // 4 +``` + +## Linters and Formatters + +- **Linters**: A linter is a static code analysis tool that flags programming errors, bugs, stylistic errors, and suspicious constructs. An example of a common linter would be ESLint. +- **Formatters**: Formatters are tools that automatically format your code to adhere to a specific style guide. An example of a common formatter would be Prettier. + +## Memory Management + +- **Definition**: Memory management is the process of controlling the memory, allocating it when needed and freeing it up when it's no longer needed. JavaScript uses automatic memory management. This means that JavaScript (more specifically, the JavaScript engine in your web browser) takes care of memory allocation and deallocation for you. You don't have to explicitly free up memory in your code. This automatic process is often called "garbage collection." + +## Closures + +- **Definition**: A closure is a function that has access to variables in its outer (enclosing) lexical scope, even after the outer function has returned. + +```js +function outerFunction(x) { + let y = 10; + function innerFunction() { + console.log(x + y); + } + return innerFunction; +} + +let closure = outerFunction(5); +closure(); // 15 +``` + +## `var` Keyword and Hoisting + +- **Definition**: `var` was the original way to declare variables before 2015. But there were some issues that came with `var` in terms of scope, redeclaration and more. So that is why modern JavaScript programming using `let` and `const` instead. +- **Redeclaring Variables with `var`**: If you try to redeclare a variable using `let`, then you would get a `SyntaxError`. But with `var`, you are allowed to redeclare a variable. + +```js +// Uncaught SyntaxError: Identifier 'num' has already been declared +let num = 19; +let num = 18; + +var myNum = 5; +var myNum = 10; // This is allowed and doesn't throw an error + +console.log(myNum) // 10 +``` + +- **`var` and Scope**: Variables declared with `var` inside a block (like an `if` statement or a `for` loop) are still accessible outside that block. + +```js +if (true) { + var num = 5; +} +console.log(num); // 5 +``` + +- **Hoisting**: This is JavaScript's default behavior of moving declarations to the top of their respective scopes during the compilation phase, before the code is executed. When you declare a variable using the `var` keyword, JavaScript hoists the declaration to the top of its scope. + +```js +console.log(num); // undefined +var num = 5; +console.log(num); // 5 +``` + +When you declare a function using the function declaration syntax, both the function name and the function body are hoisted. This means you can call a function before you've declared it in your code. + +```js +sayHello(); // "Hello, World!" + +function sayHello() { + console.log("Hello, World!"); +} +``` + +Variable declarations made with `let` or `const` are hoisted, but they are not initialized, and you can't access them before the actual declaration in your code. This behavior is often referred to as the "temporal dead zone". + +```js +console.log(num); // Throws a ReferenceError +let num = 10; +``` + +## Working with Imports, Exports and Modules + +- **Module**: This is a self-contained unit of code that encapsulates related functions, classes, or variables. +- **Imports and Exports**: It is common practice to have separate files for reusable pieces of code like helper functions or arrays that you wish to use across many files. To do this, you would need ot export that code and import it in the file you wish to use it in. + +```js +// This function is located in a file called math.js +export function add(num1, num2) { + return num1 + num2; +} + +// We can import the add function from the math.js file +import { add } from './math.js'; + +// This line imports everything from the file +// import * as Math from './math.js'; + +console.log(add(5, 3)); // 8 +``` + + +## Callback Functions and the `forEach` Method + +- **Definition**: In JavaScript, a callback function is a function that is passed as an argument to another function and is executed after the main function has finished its execution. +- **`forEach()` Method**: This method is used to iterate over each element in an array and perform an operation on each element. The callback function in `forEach` can take up to three arguments: the current element, the index of the current element, and the array that `forEach` was called upon. + +```js +const numbers = [1, 2, 3, 4, 5]; + +// Result: 2 4 6 8 10 +numbers.forEach((number) => { + console.log(number * 2); +}); +``` + +## Higher Order Functions + +- **Definition**: A higher order function takes one or more functions for the arguments and returns a function or value for the result. + +```js +function operateOnArray(arr, operation) { + const result = []; + for (let i = 0; i < arr.length; i++) { + result.push(operation(arr[i])); + } + return result; +} + +function double(x) { + return x * 2; +} + +const numbers = [1, 2, 3, 4, 5]; +const doubledNumbers = operateOnArray(numbers, double); +console.log(doubledNumbers); // [2, 4, 6, 8, 10] +``` + +- **`map()` Method**: This method is used to create a new array by applying a given function to each element of the original array. The callback function can accept up to three arguments: the current element, the index of the current element, and the array that `map` was called upon. + +```js +const numbers = [1, 2, 3, 4, 5]; +const doubled = numbers.map((num) => num * 2); + +console.log(numbers); // [1,2,3,4,5] +console.log(doubled); // [2,4,6,8,10] +``` + +- **`filter()` Method**: This method is used to create a new array with elements that pass a specified test, making it useful for selectively extracting items based on criteria. Just like the `map` method, the callback function for the `filter` method accepts the same three arguments: the current element being processed, the index, and the array. + +```js +const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; +const evenNumbers = numbers.filter((num) => num % 2 === 0); + +console.log(evenNumbers); // [2, 4, 6, 8, 10] +``` + +- **`reduce()` Method**: This method is used to process an array and condense it into a single value. This single value can be a number, a string, an object, or even another array. The `reduce()` method works by applying a function to each element in the array, in order, passing the result of each calculation on to the next. This function is often called the reducer function. The reducer function takes two main parameters: an accumulator and the current value. The accumulator is where you store the running result of your operations, and the current value is the array element being processed. + +```js +const numbers = [1, 2, 3, 4, 5]; +const sum = numbers.reduce( + (accumulator, currentValue) => accumulator + currentValue, + 0 +); + +console.log(sum); // 15 +``` + +## Method Chaining + +- **Definition**: Method chaining is a programming technique that allows you to call multiple methods on the same object in a single line of code. This technique can make your code more readable and concise, especially when performing a series of operations on the same object. + +```js +const result = " Hello, World! " + .trim() + .toLowerCase() + .replace("world", "JavaScript"); + +console.log(result); // "hello, JavaScript!" +``` + +## Working with the `sort` Method + +- **Definition**: The `sort` method is used to sort the elements of an array and return a reference to the sorted array. No copy is made in this case because the elements are sorted in place. + +```js +const fruits = ["Banana", "Orange", "Apple", "Mango"]; +fruits.sort(); + +console.log(fruits); // ["Apple","Banana","Mango","Orange"] +``` + +If you need to sort numbers, then you will need to pass in a compare function. The `sort` method converts the elements to strings and then compares their sequences of UTF-16 code units values. UTF-16 code units are the numeric values that represent the characters in the string. Examples of UTF-16 code units are the numbers 65, 66, and 67 which represent the characters "A", "B", and "C" respectively. So the number 200 appears before the number 3 in an array, because the string "200" comes before the string "3" when comparing their UTF-16 code units. + +```js +const numbers = [414, 200, 5, 10, 3]; + +numbers.sort((a, b) => a - b); + +console.log(numbers); // [3, 5, 10, 200, 414] +``` + +The parameters `a` and `b` are the two elements being compared. The compare function should return a negative value if `a` should come before `b`, a positive value if `a` should come after `b`, and zero if `a` and `b` are equal. + +## Working with the `every` and `some` Methods + +- **`every()` Method**: This method tests whether all elements in an array pass a test implemented by a provided function. The `every()` method returns `true` if the provided function returns `true` for all elements in the array. If any element fails the test, the method immediately returns `false` and stops checking the remaining elements. + +```js +const numbers = [2, 4, 6, 8, 10]; +const hasAllEvenNumbers = numbers.every((num) => num % 2 === 0); + +console.log(hasAllEvenNumbers); // true +``` + +- **`some()` Method**: This method checks if at least one element passes the test. The `some()` method returns `true` as soon as it finds an element that passes the test. If no elements pass the test, it returns `false`. + +```js +const numbers = [1, 3, 5, 7, 8, 9]; +const hasSomeEvenNumbers = numbers.some((num) => num % 2 === 0); + +console.log(hasSomeEvenNumbers); // true +``` + +## Working with the DOM and Web API's + +- **API**: An API (Application Programming Interface) is a set of rules and protocols that allow software applications to communicate with each other and exchange data efficiently. +- **Web API**: Web APIs are specifically designed for web applications. These types of APIs are often divided into two main categories: browser APIs and third-party APIs. +- **Browser APIs**: These APIs expose data from the browser. As a web developer, you can access and manipulate this data using JavaScript. +- **Third-Party APIs**: These are not built into the browser by default. You have to retrieve their code in some way. Usually, they will have detailed documentation explaining how to use their services. An example is the Google Maps API, which you can use to display interactive maps on your website. +- **DOM**: The DOM stands for Document Object Model. It’s a programming interface that lets you interact with HTML documents. With the DOM, you can add, modify, or delete elements on a webpage. The root of the DOM tree is the `` element. It’s the top-level container for all the content of an HTML document. All other nodes are descendants of this root node. Then, below the root node, we find other nodes in the hierarchy. A parent node is an element that contains other elements. A child node is an element that is contained within another element. +- **`navigator` Interface**: This provides information about the browser environment, such as the user agent string, the platform, and the version of the browser. A user agent string is a text string that identifies the browser and operating system being used. +- **`window` Interface**: This represents the browser window that contains the DOM document. It provides methods and properties for interacting with the browser window, such as resizing the window, opening new windows, and navigating to different URLs. + +## Working with the `querySelector()`, `querySelectorAll()` and `getElementById()` Methods + +- **`getElementById()` Method**: This method is used to get an object that represents the HTML element with the specified `id`. Remember that ids must be unique in every HTML document, so this method will only return one Element object. + +```html + +``` + +```js +const container = document.getElementById("container"); +``` + +- **`querySelector()` Method**: This method is used to get the first element in the HTML document that matches the CSS selector passed as argument. + +```html + +``` + +```js +const section = document.querySelector(".section"); +``` + +- **`querySelectorAll()` Method**: You can use this method to get a list of all the DOM elements that match a specific CSS selector. + +```html +Hello, World!
+I'm learning JavaScript
+Hello, World!
+I'm learning JavaScript
+first paragraph
+second paragraph
+I am a paragraph
+``` + +```js +const para = document.getElementById("para"); +para.setAttribute("class", "my-class"); +``` + +## Event Object + +- **Definition**: The `Event` object is a payload that triggers when a user interacts with your web page in some way. These interactions can be anything from clicking on a button or focusing an input to shaking their mobile device. All `Event` objects will have the `type` property. This property reveals the type of event that triggered the payload, such as keydown or click. These values will correspond to the same values you might pass to `addEventListener`(), where you can capture and utilize the `Event` object. + +## `addEventListener()` and `removeEventListener()` Methods + +- **`addEventListener` Method**: This method is used to listen for events. It takes two arguments: the event you want to listen for and a function that will be called when the event occurs. Some common examples of events would be click events, input events, change events, and input events. + +```js +const btn = document.getElementById("btn"); + +btn.addEventListener("click", () => alert("You clicked the button")); +``` + +- **`removeEventListener` Method**: This method is used to remove an event listener that was previously added to an element using the `addEventListener` method. This is useful when you want to stop listening for a particular event on an element. + +```js +const bodyEl = document.querySelector("body"); +const para = document.getElementById("para"); +const btn = document.getElementById("btn"); + +let isBgColorGrey = true; + +function toggleBgColor() { + bodyEl.style.backgroundColor = isBgColorGrey ? "blue" : "grey"; + isBgColorGrey = !isBgColorGrey; +} + +btn.addEventListener("click", toggleBgColor); + +para.addEventListener("mouseover", () => { + btn.removeEventListener("click", toggleBgColor); +}); +``` + +- **Inline Event Handlers**: Inline event handlers are special attributes on an HTML element that are used to execute JavaScript code when an event occurs. In modern JavaScript, inline event handlers are not considered best practice. It is preferred to use the `addEventListener` method instead. + +```html + +``` + +## DOMContentLoaded + +- **Definition**: The `DOMContentLoaded` event is fired when everything in the HTML document has been loaded and parsed. If you have external stylesheets, or images, the `DOMContentLoaded` event will not wait for those to be loaded. It will only wait for the HTML to be loaded. + +## Working with `style` and `classList` + +- **`Element.style` Property**: This property is a read only property that represents the inline style of an element. You can use this property to get or set the style of an element. + +```js +const paraEl = document.getElementById("para"); +paraEl.style.color = "red"; +``` + +- **`Element.classList` Property**: This property is a read only property that can be used to add, remove, or toggle classes on an element. + +```js +// Example adding a class +const paraEl = document.getElementById("para"); +paraEl.classList.add("highlight"); + +// Example removing a class +paraEl.classList.remove("blue-background"); + +// Example toggling a class +const menu = document.getElementById("menu"); +const toggleBtn = document.getElementById("toggle-btn"); + +toggleBtn.addEventListener("click", () => menu.classList.toggle("show")); +``` + + +## Working with the `setTimeout` and `setInterval` Methods + +- **`setTimeout()` Method**: This method lets you delay an action for a specified time. + +```js +setTimeout(() => { + console.log('This runs after 3 seconds'); +}, 3000); +``` + +- **`setInterval()` Method**: This method keeps runs a piece of code repeatedly at a set interval. Since `setInterval()` keeps executing the provided function at the specified interval, you might want to stop it. For this, you have to use the `clearInterval()` method. + +```js +setInterval(() => { + console.log('This runs every 2 seconds'); +}, 2000); + +// Example using clearInterval +const intervalID = setInterval(() => { + console.log('This will stop after 5 seconds'); +}, 1000); + +setTimeout(() => { + clearInterval(intervalID); +}, 5000); +``` + +## The `requestAnimationFrame()` Method + +- **Definition**: This method allows you to schedule the next step of your animation before the next screen repaint, resulting in a fluid and visually appealing experience. The next screen repaint refers to the moment when the browser refreshes the visual display of the web page. This happens multiple times per second, typically around 60 times (or 60 frames per second) on most displays. + +```js +function animate() { + // Update the animation... + // for example, move an element, change a style, and more. + update(); + // Request the next frame + requestAnimationFrame(animate); +} +``` + +## Web Animations API + +- **Definition**: The Web Animations API lets you create and control animations directly inside JavaScript. + +```js +const square = document.querySelector('#square'); + +const animation = square.animate( + [{ transform: 'translateX(0px)' }, { transform: 'translateX(100px)' }], + { + duration: 2000, // makes animation lasts 2 seconds + iterations: Infinity, // loops indefinitely + direction: 'alternate', // moves back and forth + easing: 'ease-in-out', // smooth easing + } +); +``` + +## The Canvas API + +- **Definition**: The Canvas API is a powerful tool that lets you and manipulate graphics right inside your JavaScript file. To work with the Canvas API, you first need to provide a `