diff --git a/curriculum/challenges/arabic/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md b/curriculum/challenges/arabic/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
index 7195d377811..320b99958ff 100644
--- a/curriculum/challenges/arabic/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
+++ b/curriculum/challenges/arabic/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
@@ -48,6 +48,20 @@ const itemPMarginBottom = new __helpers.CSSHelp(document).getStyle('.item p')?.g
assert(itemPMarginBottom === '5px');
```
+Your `p` elements nested in your `.item` elements should not have a `margin-left` set.
+
+```js
+const itemPMarginLeft = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-left');
+assert(!itemPMarginLeft);
+```
+
+Your `p` elements nested in your `.item` elements should not have a `margin-right` set.
+
+```js
+const itemPMarginRight = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-right');
+assert(!itemPMarginRight);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/arabic/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md b/curriculum/challenges/arabic/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
index b72ab676454..97333f41b40 100644
--- a/curriculum/challenges/arabic/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
+++ b/curriculum/challenges/arabic/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
@@ -9,7 +9,7 @@ dashedName: step-28
Currently when someone submit the form, they can submit it without checking the radio inputs. Although you had used `required` attribute to indicate the the input is required previously, this can't work in this case, because adding required to both inputs, will convey the wrong information to the form users.
-To solve this, you can provide context of what is needed by adding `legend` element below the second `fieldset` with text `Account type (required)`, then add `checked` attribute to the `Personal` input to make sure that the form is submitted with the required data in it.
+To solve this, you can provide context of what is needed by adding a `legend` element with text `Account type (required)` before the `label` elements within the second `fieldset`. Then add the `checked` attribute to the `Personal` input to ensure the form is submitted with the required data in it.
# --hints--
diff --git a/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md b/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
index 16fcfd166a3..a0733f1687a 100644
--- a/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
+++ b/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
@@ -17,19 +17,12 @@ Your should have a `link` element.
assert.match(code, //)
```
-Your `link` element should have an `href` attribute with the value `./styles.css`.
-
-```js
-assert.match(code, //)
-```
-
-
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md b/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
index 7c88ce9baa8..0e57e0aebc2 100644
--- a/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
+++ b/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
@@ -65,14 +65,16 @@ body {
background-color: #c9d2fc;
}
+--fcc-editable-region--
.cat-head {
- --fcc-editable-region--
- --fcc-editable-region--
+
+
background: linear-gradient(#5e5e5e 85%, #45454f 100%);
width: 205px;
height: 180px;
border: 1px solid #000;
border-radius: 46%;
}
+--fcc-editable-region--
```
diff --git a/curriculum/challenges/arabic/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md b/curriculum/challenges/arabic/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
index b2dda0bcbc7..dc1e0d1e25d 100644
--- a/curriculum/challenges/arabic/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
+++ b/curriculum/challenges/arabic/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
@@ -13,6 +13,12 @@ Set the `hello` variable to "world". Then print the value.
# --hints--
+The source code should include `one = 2`
+
+```js
+assert(code.match(/one\s*=\s*2/))
+```
+
The `hello` variable should equal "world".
```js
@@ -27,12 +33,6 @@ The `hello` variable should equal "world".
--fcc-editable-region--
one = 1
hello = "goodbye"
-def a_function():
- local_thing = "world"
- print(local_thing)
-
-a_function()
-
print(hello)
--fcc-editable-region--
```
@@ -40,7 +40,7 @@ print(hello)
# --solutions--
```py
-one = 1
+one = 2
hello = "world"
print(hello)
```
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
new file mode 100644
index 00000000000..a8abd3ff027
--- /dev/null
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
@@ -0,0 +1,93 @@
+---
+id: 651dd5ae6ffb500e3f2ce47c
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+```js
+console.log('with code');
+```
+
+***
+
+Making a statement based on her assumption.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Expressing a possibility.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
new file mode 100644
index 00000000000..27f5dcb5e42
--- /dev/null
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5d86ffb500e3f2ce47d
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
new file mode 100644
index 00000000000..a79f83d6f5a
--- /dev/null
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd5f41d697d0aab7833b5
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
new file mode 100644
index 00000000000..13028d7c28a
--- /dev/null
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
@@ -0,0 +1,15 @@
+---
+id: 651dd3e06ffb500e3f2ce478
+title: "Dialogue: Introducing"
+challengeType: 21
+videoId: nLDychdBwUg
+dashedName: dialogue-introducing
+---
+
+# --description--
+
+What the video above to understand the context of the upcoming lessons.
+
+# --assignment--
+
+Watch the video
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
new file mode 100644
index 00000000000..3d67f522c07
--- /dev/null
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
@@ -0,0 +1,49 @@
+---
+id: 6543abeff5f028dba112f278
+title: "I am: I'm"
+challengeType: 19
+dashedName: i-am-im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, the verb `to be` is used to talk about identities, characteristics, and more. The contraction `I'm` is a combination of `I` and `am`. Here, Tom uses it to introduce himself.
+
+# --question--
+
+## --text--
+
+Which operation correctly expands the contraction `I'm`?
+
+## --answers--
+
+`I is`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I am`
+
+***
+
+`I was`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I have`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+## --video-solution--
+
+2
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
new file mode 100644
index 00000000000..a2aa6a8f717
--- /dev/null
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
@@ -0,0 +1,21 @@
+---
+id: 6543abf5f5f028dba112f279
+title: I'm
+challengeType: 22
+dashedName: im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+The word `I'm` is a contraction of `I am`. Contractions are a way to shorten common combinations of words, especially with verbs.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, that's right! _ Tom McKenzie.`
+
+## --blanks--
+
+`I'm`
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
new file mode 100644
index 00000000000..3b8b7cff0bd
--- /dev/null
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
@@ -0,0 +1,53 @@
+---
+id: 6537e6ece93e5724eeb27c54
+title: Name and Job Title
+challengeType: 19
+dashedName: name-and-job-title
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, we often mention our job or role in a company by saying, `I'm [Name], the [Job title].` This lets others know our position or role.
+
+# --question--
+
+## --text--
+
+What is Maria's job role at the company?
+
+## --answers--
+
+`Graphic Designer`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Member`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Lead`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`CEO`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
new file mode 100644
index 00000000000..2a3c405b6ad
--- /dev/null
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
@@ -0,0 +1,33 @@
+---
+id: 651dd5386ffb500e3f2ce47a
+title: Right
+challengeType: 22
+dashedName: right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, to check or confirm something people sometimes use tag questions. For example, `You are a programmer, right?` Here, `right?` is used as a tag to check or confirm the previous statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, _?`
+
+## --blanks--
+
+`are`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
+
+***
+
+`right`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
new file mode 100644
index 00000000000..2ae09721cbf
--- /dev/null
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
@@ -0,0 +1,33 @@
+---
+id: 6543aa3df5f028dba112f275
+title: Team Lead
+challengeType: 22
+dashedName: team-lead
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+A `team lead` is a person who leads or manages a team. In the dialogue, Maria introduces herself as the team lead, meaning she has a leadership role.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`I'm Maria, the _ _.`
+
+## --blanks--
+
+team
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+lead
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
new file mode 100644
index 00000000000..3349bcfead9
--- /dev/null
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
@@ -0,0 +1,25 @@
+---
+id: 6543aae6f5f028dba112f277
+title: "That's Right: 2"
+challengeType: 22
+dashedName: thats-right-2
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+Placeholder Description \_\_\_ \_\_
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, _ _! I'm Tom McKenzie. It's a pleasure to meet you.`
+
+## --blanks--
+
+`that's`
+
+***
+
+`right`
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
new file mode 100644
index 00000000000..e85982fd561
--- /dev/null
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
@@ -0,0 +1,49 @@
+---
+id: 6543aaa9f5f028dba112f276
+title: That's Right
+challengeType: 19
+dashedName: thats-right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+When someone makes a correct assumption or guess about you, you can confirm it using phrases like `that's right`. It's a way of agreeing or saying yes to what is said.
+
+# --question--
+
+## --text--
+
+Which phrase does Tom use to confirm Maria's statement about him?
+
+## --answers--
+
+`that's wrong`
+
+### --feedback--
+
+`That's wrong` is used to disagree.
+
+***
+
+`that's okay`
+
+### --feedback--
+
+`that's okay` usually shows acceptance, not confirmation.
+
+***
+
+`that's right`
+
+***
+
+`that's left`
+
+### --feedback--
+
+`that's left` refers to a direction, not confirmation.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
new file mode 100644
index 00000000000..dd254987129
--- /dev/null
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
@@ -0,0 +1,27 @@
+---
+id: 651dd5296ffb500e3f2ce479
+title: You Are
+challengeType: 22
+dashedName: you-are
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, when making introductions or identifying someone, you use the verb `to be`. In this case, `You are` is used to address the person Maria is talking to and affirmatively identify their occupation.
+
+Maria is introducing herself and confirming Tom's job role. `Are` is used in the present affirmative to make a statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, right?`
+
+## --blanks--
+
+are
+
+### --feedback--
+
+The verb `to be` is an irregular verb. When conjugated with the pronoun `you`, `be` becomes `are`. For example: `You are an English learner.`
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
new file mode 100644
index 00000000000..7aa1e30008d
--- /dev/null
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5a46ffb500e3f2ce47b
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+***
+
+Giving a job description.
+
+***
+
+Making a statement based on her assumption.
+
+***
+
+Expressing a possibility.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
new file mode 100644
index 00000000000..2ee50fe5647
--- /dev/null
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5e46ffb500e3f2ce47e
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
new file mode 100644
index 00000000000..adc4b41f091
--- /dev/null
+++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd6071d697d0aab7833b6
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/chinese-traditional/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml b/curriculum/challenges/chinese-traditional/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml
new file mode 100644
index 00000000000..3ea323ff9d9
--- /dev/null
+++ b/curriculum/challenges/chinese-traditional/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml
@@ -0,0 +1,10 @@
+---
+id: 651dd7e01d697d0aab7833b7
+title: A2 English for Developers Certification
+certification: a2-english-for-developers
+challengeType: 7
+isPrivate: true
+tests:
+ -
+ id: 651dd3e06ffb500e3f2ce478
+ title: Challenge 1
diff --git a/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md b/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
index 2384cf10ebb..51bf1b282a8 100644
--- a/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
+++ b/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
@@ -81,13 +81,13 @@ assert(foods.grapes === 35);
assert(foods.strawberries === 27);
```
-應使用點號表示法或方括號表示法來設置對象的屬性。
+The definition of the `foods` object should not be changed.
```js
assert(
- code.search(/bananas:/) === -1 &&
- code.search(/grapes:/) === -1 &&
- code.search(/strawberries:/) === -1
+ code.search(/let foods/) === -1 &&
+ code.search(/const\s+foods\s*=\s*{\s*apples:\s*25,\s*oranges:\s*32,\s*plums:\s*28\s*};/
+) !== -1
);
```
@@ -96,7 +96,7 @@ assert(
## --seed-contents--
```js
-let foods = {
+const foods = {
apples: 25,
oranges: 32,
plums: 28
@@ -112,7 +112,7 @@ console.log(foods);
# --solutions--
```js
-let foods = {
+const foods = {
apples: 25,
oranges: 32,
plums: 28
diff --git a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
index a0f89278c2a..28d6018b7f3 100644
--- a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
+++ b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
@@ -11,24 +11,43 @@ dashedName: step-40
# --hints--
-你應該給 `label` 元素一個 `for` 屬性。
+You should give the `textarea` element an `id` attribute.
```js
-assert.notEmpty(document.querySelectorAll('.formrow > .question-block')?.[1]?.querySelector('label')?.htmlFor);
+assert.notEmpty(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id);
```
-你應該給 `textarea` 元素添加一個與 `label` 元素的 `for` 屬性匹配的 `id` 屬性。
+You cannot include spaces in the `id` for the `textarea` element.
+
+```js
+assert.match(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id, /^\S+$/);
+```
+
+You must choose a different `id` for the `textarea` element because another element is using that `id`.
+
+```js
+const textareaId = document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id;
+assert.equal(document.querySelectorAll(`[id='${textareaId.replaceAll(/(['\\])/g, "\\$1")}']`).length, 1);
+```
+
+You should give the `label` element a `for` attribute matching the `id` of the `textarea` element.
```js
assert.equal(document.querySelectorAll('.formrow > .question-block')?.[1]?.querySelector('label')?.htmlFor, document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id);
```
-你應該給 `textarea` 元素一個 `name` 屬性。
+You should give the `textarea` element a `name` attribute.
```js
assert.notEmpty(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.name);
```
+You should use at least one non-space character in the `name` attribute for the `textarea`.
+
+```js
+assert.match(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.name, /\S/);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
index 7e32478a932..25d799f972b 100644
--- a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
+++ b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
@@ -148,10 +148,10 @@ assert.equal(document.querySelector('button[type="submit"]')?.textContent ?? doc
diff --git a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
index a460abc80ad..3300635bc9f 100644
--- a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
+++ b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
@@ -48,6 +48,20 @@ const itemPMarginBottom = new __helpers.CSSHelp(document).getStyle('.item p')?.g
assert(itemPMarginBottom === '5px');
```
+Your `p` elements nested in your `.item` elements should not have a `margin-left` set.
+
+```js
+const itemPMarginLeft = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-left');
+assert(!itemPMarginLeft);
+```
+
+Your `p` elements nested in your `.item` elements should not have a `margin-right` set.
+
+```js
+const itemPMarginRight = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-right');
+assert(!itemPMarginRight);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
index 978027120d9..005fe4a18de 100644
--- a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
+++ b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
@@ -9,7 +9,7 @@ dashedName: step-28
Currently when someone submit the form, they can submit it without checking the radio inputs. Although you had used `required` attribute to indicate the the input is required previously, this can't work in this case, because adding required to both inputs, will convey the wrong information to the form users.
-To solve this, you can provide context of what is needed by adding `legend` element below the second `fieldset` with text `Account type (required)`, then add `checked` attribute to the `Personal` input to make sure that the form is submitted with the required data in it.
+To solve this, you can provide context of what is needed by adding a `legend` element with text `Account type (required)` before the `label` elements within the second `fieldset`. Then add the `checked` attribute to the `Personal` input to ensure the form is submitted with the required data in it.
# --hints--
diff --git a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
index 16fcfd166a3..a0733f1687a 100644
--- a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
+++ b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
@@ -17,19 +17,12 @@ Your should have a `link` element.
assert.match(code, //)
```
-Your `link` element should have an `href` attribute with the value `./styles.css`.
-
-```js
-assert.match(code, //)
-```
-
-
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
index 6ec9533fb65..524d5a8f8fb 100644
--- a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
+++ b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
@@ -65,14 +65,16 @@ body {
background-color: #c9d2fc;
}
+--fcc-editable-region--
.cat-head {
- --fcc-editable-region--
- --fcc-editable-region--
+
+
background: linear-gradient(#5e5e5e 85%, #45454f 100%);
width: 205px;
height: 180px;
border: 1px solid #000;
border-radius: 46%;
}
+--fcc-editable-region--
```
diff --git a/curriculum/challenges/chinese-traditional/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md b/curriculum/challenges/chinese-traditional/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
index b2dda0bcbc7..dc1e0d1e25d 100644
--- a/curriculum/challenges/chinese-traditional/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
+++ b/curriculum/challenges/chinese-traditional/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
@@ -13,6 +13,12 @@ Set the `hello` variable to "world". Then print the value.
# --hints--
+The source code should include `one = 2`
+
+```js
+assert(code.match(/one\s*=\s*2/))
+```
+
The `hello` variable should equal "world".
```js
@@ -27,12 +33,6 @@ The `hello` variable should equal "world".
--fcc-editable-region--
one = 1
hello = "goodbye"
-def a_function():
- local_thing = "world"
- print(local_thing)
-
-a_function()
-
print(hello)
--fcc-editable-region--
```
@@ -40,7 +40,7 @@ print(hello)
# --solutions--
```py
-one = 1
+one = 2
hello = "world"
print(hello)
```
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
new file mode 100644
index 00000000000..a8abd3ff027
--- /dev/null
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
@@ -0,0 +1,93 @@
+---
+id: 651dd5ae6ffb500e3f2ce47c
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+```js
+console.log('with code');
+```
+
+***
+
+Making a statement based on her assumption.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Expressing a possibility.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
new file mode 100644
index 00000000000..27f5dcb5e42
--- /dev/null
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5d86ffb500e3f2ce47d
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
new file mode 100644
index 00000000000..a79f83d6f5a
--- /dev/null
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd5f41d697d0aab7833b5
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
new file mode 100644
index 00000000000..13028d7c28a
--- /dev/null
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
@@ -0,0 +1,15 @@
+---
+id: 651dd3e06ffb500e3f2ce478
+title: "Dialogue: Introducing"
+challengeType: 21
+videoId: nLDychdBwUg
+dashedName: dialogue-introducing
+---
+
+# --description--
+
+What the video above to understand the context of the upcoming lessons.
+
+# --assignment--
+
+Watch the video
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
new file mode 100644
index 00000000000..3d67f522c07
--- /dev/null
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
@@ -0,0 +1,49 @@
+---
+id: 6543abeff5f028dba112f278
+title: "I am: I'm"
+challengeType: 19
+dashedName: i-am-im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, the verb `to be` is used to talk about identities, characteristics, and more. The contraction `I'm` is a combination of `I` and `am`. Here, Tom uses it to introduce himself.
+
+# --question--
+
+## --text--
+
+Which operation correctly expands the contraction `I'm`?
+
+## --answers--
+
+`I is`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I am`
+
+***
+
+`I was`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I have`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+## --video-solution--
+
+2
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
new file mode 100644
index 00000000000..a2aa6a8f717
--- /dev/null
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
@@ -0,0 +1,21 @@
+---
+id: 6543abf5f5f028dba112f279
+title: I'm
+challengeType: 22
+dashedName: im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+The word `I'm` is a contraction of `I am`. Contractions are a way to shorten common combinations of words, especially with verbs.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, that's right! _ Tom McKenzie.`
+
+## --blanks--
+
+`I'm`
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
new file mode 100644
index 00000000000..3b8b7cff0bd
--- /dev/null
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
@@ -0,0 +1,53 @@
+---
+id: 6537e6ece93e5724eeb27c54
+title: Name and Job Title
+challengeType: 19
+dashedName: name-and-job-title
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, we often mention our job or role in a company by saying, `I'm [Name], the [Job title].` This lets others know our position or role.
+
+# --question--
+
+## --text--
+
+What is Maria's job role at the company?
+
+## --answers--
+
+`Graphic Designer`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Member`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Lead`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`CEO`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
new file mode 100644
index 00000000000..2a3c405b6ad
--- /dev/null
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
@@ -0,0 +1,33 @@
+---
+id: 651dd5386ffb500e3f2ce47a
+title: Right
+challengeType: 22
+dashedName: right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, to check or confirm something people sometimes use tag questions. For example, `You are a programmer, right?` Here, `right?` is used as a tag to check or confirm the previous statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, _?`
+
+## --blanks--
+
+`are`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
+
+***
+
+`right`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
new file mode 100644
index 00000000000..2ae09721cbf
--- /dev/null
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
@@ -0,0 +1,33 @@
+---
+id: 6543aa3df5f028dba112f275
+title: Team Lead
+challengeType: 22
+dashedName: team-lead
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+A `team lead` is a person who leads or manages a team. In the dialogue, Maria introduces herself as the team lead, meaning she has a leadership role.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`I'm Maria, the _ _.`
+
+## --blanks--
+
+team
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+lead
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
new file mode 100644
index 00000000000..3349bcfead9
--- /dev/null
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
@@ -0,0 +1,25 @@
+---
+id: 6543aae6f5f028dba112f277
+title: "That's Right: 2"
+challengeType: 22
+dashedName: thats-right-2
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+Placeholder Description \_\_\_ \_\_
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, _ _! I'm Tom McKenzie. It's a pleasure to meet you.`
+
+## --blanks--
+
+`that's`
+
+***
+
+`right`
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
new file mode 100644
index 00000000000..e85982fd561
--- /dev/null
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
@@ -0,0 +1,49 @@
+---
+id: 6543aaa9f5f028dba112f276
+title: That's Right
+challengeType: 19
+dashedName: thats-right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+When someone makes a correct assumption or guess about you, you can confirm it using phrases like `that's right`. It's a way of agreeing or saying yes to what is said.
+
+# --question--
+
+## --text--
+
+Which phrase does Tom use to confirm Maria's statement about him?
+
+## --answers--
+
+`that's wrong`
+
+### --feedback--
+
+`That's wrong` is used to disagree.
+
+***
+
+`that's okay`
+
+### --feedback--
+
+`that's okay` usually shows acceptance, not confirmation.
+
+***
+
+`that's right`
+
+***
+
+`that's left`
+
+### --feedback--
+
+`that's left` refers to a direction, not confirmation.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
new file mode 100644
index 00000000000..dd254987129
--- /dev/null
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
@@ -0,0 +1,27 @@
+---
+id: 651dd5296ffb500e3f2ce479
+title: You Are
+challengeType: 22
+dashedName: you-are
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, when making introductions or identifying someone, you use the verb `to be`. In this case, `You are` is used to address the person Maria is talking to and affirmatively identify their occupation.
+
+Maria is introducing herself and confirming Tom's job role. `Are` is used in the present affirmative to make a statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, right?`
+
+## --blanks--
+
+are
+
+### --feedback--
+
+The verb `to be` is an irregular verb. When conjugated with the pronoun `you`, `be` becomes `are`. For example: `You are an English learner.`
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
new file mode 100644
index 00000000000..7aa1e30008d
--- /dev/null
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5a46ffb500e3f2ce47b
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+***
+
+Giving a job description.
+
+***
+
+Making a statement based on her assumption.
+
+***
+
+Expressing a possibility.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
new file mode 100644
index 00000000000..2ee50fe5647
--- /dev/null
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5e46ffb500e3f2ce47e
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
new file mode 100644
index 00000000000..adc4b41f091
--- /dev/null
+++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd6071d697d0aab7833b6
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/chinese/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml b/curriculum/challenges/chinese/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml
new file mode 100644
index 00000000000..3ea323ff9d9
--- /dev/null
+++ b/curriculum/challenges/chinese/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml
@@ -0,0 +1,10 @@
+---
+id: 651dd7e01d697d0aab7833b7
+title: A2 English for Developers Certification
+certification: a2-english-for-developers
+challengeType: 7
+isPrivate: true
+tests:
+ -
+ id: 651dd3e06ffb500e3f2ce478
+ title: Challenge 1
diff --git a/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md b/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
index ae4df945073..a7365779eee 100644
--- a/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
+++ b/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
@@ -81,13 +81,13 @@ assert(foods.grapes === 35);
assert(foods.strawberries === 27);
```
-应使用点号表示法或方括号表示法来设置对象的属性。
+The definition of the `foods` object should not be changed.
```js
assert(
- code.search(/bananas:/) === -1 &&
- code.search(/grapes:/) === -1 &&
- code.search(/strawberries:/) === -1
+ code.search(/let foods/) === -1 &&
+ code.search(/const\s+foods\s*=\s*{\s*apples:\s*25,\s*oranges:\s*32,\s*plums:\s*28\s*};/
+) !== -1
);
```
@@ -96,7 +96,7 @@ assert(
## --seed-contents--
```js
-let foods = {
+const foods = {
apples: 25,
oranges: 32,
plums: 28
@@ -112,7 +112,7 @@ console.log(foods);
# --solutions--
```js
-let foods = {
+const foods = {
apples: 25,
oranges: 32,
plums: 28
diff --git a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
index b3e2119a2de..6903a39700f 100644
--- a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
+++ b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
@@ -11,24 +11,43 @@ dashedName: step-40
# --hints--
-你应该给 `label` 元素一个 `for` 属性。
+You should give the `textarea` element an `id` attribute.
```js
-assert.notEmpty(document.querySelectorAll('.formrow > .question-block')?.[1]?.querySelector('label')?.htmlFor);
+assert.notEmpty(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id);
```
-你应该给 `textarea` 元素添加一个与 `label` 元素的 `for` 属性匹配的 `id` 属性。
+You cannot include spaces in the `id` for the `textarea` element.
+
+```js
+assert.match(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id, /^\S+$/);
+```
+
+You must choose a different `id` for the `textarea` element because another element is using that `id`.
+
+```js
+const textareaId = document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id;
+assert.equal(document.querySelectorAll(`[id='${textareaId.replaceAll(/(['\\])/g, "\\$1")}']`).length, 1);
+```
+
+You should give the `label` element a `for` attribute matching the `id` of the `textarea` element.
```js
assert.equal(document.querySelectorAll('.formrow > .question-block')?.[1]?.querySelector('label')?.htmlFor, document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id);
```
-你应该给 `textarea` 元素一个 `name` 属性。
+You should give the `textarea` element a `name` attribute.
```js
assert.notEmpty(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.name);
```
+You should use at least one non-space character in the `name` attribute for the `textarea`.
+
+```js
+assert.match(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.name, /\S/);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
index 7ee3e668304..9af72984f78 100644
--- a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
+++ b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
@@ -148,10 +148,10 @@ assert.equal(document.querySelector('button[type="submit"]')?.textContent ?? doc
diff --git a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
index 1dd69e3dbf2..bf0c5c3606f 100644
--- a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
+++ b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
@@ -48,6 +48,20 @@ const itemPMarginBottom = new __helpers.CSSHelp(document).getStyle('.item p')?.g
assert(itemPMarginBottom === '5px');
```
+Your `p` elements nested in your `.item` elements should not have a `margin-left` set.
+
+```js
+const itemPMarginLeft = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-left');
+assert(!itemPMarginLeft);
+```
+
+Your `p` elements nested in your `.item` elements should not have a `margin-right` set.
+
+```js
+const itemPMarginRight = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-right');
+assert(!itemPMarginRight);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
index 740b21ea8d6..c73734f10b0 100644
--- a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
+++ b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
@@ -9,7 +9,7 @@ dashedName: step-28
Currently when someone submit the form, they can submit it without checking the radio inputs. Although you had used `required` attribute to indicate the the input is required previously, this can't work in this case, because adding required to both inputs, will convey the wrong information to the form users.
-To solve this, you can provide context of what is needed by adding `legend` element below the second `fieldset` with text `Account type (required)`, then add `checked` attribute to the `Personal` input to make sure that the form is submitted with the required data in it.
+To solve this, you can provide context of what is needed by adding a `legend` element with text `Account type (required)` before the `label` elements within the second `fieldset`. Then add the `checked` attribute to the `Personal` input to ensure the form is submitted with the required data in it.
# --hints--
diff --git a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
index 16fcfd166a3..a0733f1687a 100644
--- a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
+++ b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
@@ -17,19 +17,12 @@ Your should have a `link` element.
assert.match(code, //)
```
-Your `link` element should have an `href` attribute with the value `./styles.css`.
-
-```js
-assert.match(code, //)
-```
-
-
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
index cdce5a52203..2f33d45afee 100644
--- a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
+++ b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
@@ -65,14 +65,16 @@ body {
background-color: #c9d2fc;
}
+--fcc-editable-region--
.cat-head {
- --fcc-editable-region--
- --fcc-editable-region--
+
+
background: linear-gradient(#5e5e5e 85%, #45454f 100%);
width: 205px;
height: 180px;
border: 1px solid #000;
border-radius: 46%;
}
+--fcc-editable-region--
```
diff --git a/curriculum/challenges/chinese/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md b/curriculum/challenges/chinese/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
index b2dda0bcbc7..dc1e0d1e25d 100644
--- a/curriculum/challenges/chinese/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
+++ b/curriculum/challenges/chinese/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
@@ -13,6 +13,12 @@ Set the `hello` variable to "world". Then print the value.
# --hints--
+The source code should include `one = 2`
+
+```js
+assert(code.match(/one\s*=\s*2/))
+```
+
The `hello` variable should equal "world".
```js
@@ -27,12 +33,6 @@ The `hello` variable should equal "world".
--fcc-editable-region--
one = 1
hello = "goodbye"
-def a_function():
- local_thing = "world"
- print(local_thing)
-
-a_function()
-
print(hello)
--fcc-editable-region--
```
@@ -40,7 +40,7 @@ print(hello)
# --solutions--
```py
-one = 1
+one = 2
hello = "world"
print(hello)
```
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
new file mode 100644
index 00000000000..a8abd3ff027
--- /dev/null
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
@@ -0,0 +1,93 @@
+---
+id: 651dd5ae6ffb500e3f2ce47c
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+```js
+console.log('with code');
+```
+
+***
+
+Making a statement based on her assumption.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Expressing a possibility.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
new file mode 100644
index 00000000000..27f5dcb5e42
--- /dev/null
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5d86ffb500e3f2ce47d
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
new file mode 100644
index 00000000000..a79f83d6f5a
--- /dev/null
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd5f41d697d0aab7833b5
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
new file mode 100644
index 00000000000..13028d7c28a
--- /dev/null
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
@@ -0,0 +1,15 @@
+---
+id: 651dd3e06ffb500e3f2ce478
+title: "Dialogue: Introducing"
+challengeType: 21
+videoId: nLDychdBwUg
+dashedName: dialogue-introducing
+---
+
+# --description--
+
+What the video above to understand the context of the upcoming lessons.
+
+# --assignment--
+
+Watch the video
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
new file mode 100644
index 00000000000..3d67f522c07
--- /dev/null
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
@@ -0,0 +1,49 @@
+---
+id: 6543abeff5f028dba112f278
+title: "I am: I'm"
+challengeType: 19
+dashedName: i-am-im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, the verb `to be` is used to talk about identities, characteristics, and more. The contraction `I'm` is a combination of `I` and `am`. Here, Tom uses it to introduce himself.
+
+# --question--
+
+## --text--
+
+Which operation correctly expands the contraction `I'm`?
+
+## --answers--
+
+`I is`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I am`
+
+***
+
+`I was`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I have`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+## --video-solution--
+
+2
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
new file mode 100644
index 00000000000..a2aa6a8f717
--- /dev/null
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
@@ -0,0 +1,21 @@
+---
+id: 6543abf5f5f028dba112f279
+title: I'm
+challengeType: 22
+dashedName: im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+The word `I'm` is a contraction of `I am`. Contractions are a way to shorten common combinations of words, especially with verbs.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, that's right! _ Tom McKenzie.`
+
+## --blanks--
+
+`I'm`
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
new file mode 100644
index 00000000000..3b8b7cff0bd
--- /dev/null
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
@@ -0,0 +1,53 @@
+---
+id: 6537e6ece93e5724eeb27c54
+title: Name and Job Title
+challengeType: 19
+dashedName: name-and-job-title
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, we often mention our job or role in a company by saying, `I'm [Name], the [Job title].` This lets others know our position or role.
+
+# --question--
+
+## --text--
+
+What is Maria's job role at the company?
+
+## --answers--
+
+`Graphic Designer`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Member`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Lead`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`CEO`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
new file mode 100644
index 00000000000..2a3c405b6ad
--- /dev/null
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
@@ -0,0 +1,33 @@
+---
+id: 651dd5386ffb500e3f2ce47a
+title: Right
+challengeType: 22
+dashedName: right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, to check or confirm something people sometimes use tag questions. For example, `You are a programmer, right?` Here, `right?` is used as a tag to check or confirm the previous statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, _?`
+
+## --blanks--
+
+`are`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
+
+***
+
+`right`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
new file mode 100644
index 00000000000..2ae09721cbf
--- /dev/null
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
@@ -0,0 +1,33 @@
+---
+id: 6543aa3df5f028dba112f275
+title: Team Lead
+challengeType: 22
+dashedName: team-lead
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+A `team lead` is a person who leads or manages a team. In the dialogue, Maria introduces herself as the team lead, meaning she has a leadership role.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`I'm Maria, the _ _.`
+
+## --blanks--
+
+team
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+lead
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
new file mode 100644
index 00000000000..3349bcfead9
--- /dev/null
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
@@ -0,0 +1,25 @@
+---
+id: 6543aae6f5f028dba112f277
+title: "That's Right: 2"
+challengeType: 22
+dashedName: thats-right-2
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+Placeholder Description \_\_\_ \_\_
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, _ _! I'm Tom McKenzie. It's a pleasure to meet you.`
+
+## --blanks--
+
+`that's`
+
+***
+
+`right`
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
new file mode 100644
index 00000000000..e85982fd561
--- /dev/null
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
@@ -0,0 +1,49 @@
+---
+id: 6543aaa9f5f028dba112f276
+title: That's Right
+challengeType: 19
+dashedName: thats-right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+When someone makes a correct assumption or guess about you, you can confirm it using phrases like `that's right`. It's a way of agreeing or saying yes to what is said.
+
+# --question--
+
+## --text--
+
+Which phrase does Tom use to confirm Maria's statement about him?
+
+## --answers--
+
+`that's wrong`
+
+### --feedback--
+
+`That's wrong` is used to disagree.
+
+***
+
+`that's okay`
+
+### --feedback--
+
+`that's okay` usually shows acceptance, not confirmation.
+
+***
+
+`that's right`
+
+***
+
+`that's left`
+
+### --feedback--
+
+`that's left` refers to a direction, not confirmation.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
new file mode 100644
index 00000000000..dd254987129
--- /dev/null
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
@@ -0,0 +1,27 @@
+---
+id: 651dd5296ffb500e3f2ce479
+title: You Are
+challengeType: 22
+dashedName: you-are
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, when making introductions or identifying someone, you use the verb `to be`. In this case, `You are` is used to address the person Maria is talking to and affirmatively identify their occupation.
+
+Maria is introducing herself and confirming Tom's job role. `Are` is used in the present affirmative to make a statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, right?`
+
+## --blanks--
+
+are
+
+### --feedback--
+
+The verb `to be` is an irregular verb. When conjugated with the pronoun `you`, `be` becomes `are`. For example: `You are an English learner.`
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
new file mode 100644
index 00000000000..7aa1e30008d
--- /dev/null
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5a46ffb500e3f2ce47b
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+***
+
+Giving a job description.
+
+***
+
+Making a statement based on her assumption.
+
+***
+
+Expressing a possibility.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
new file mode 100644
index 00000000000..2ee50fe5647
--- /dev/null
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5e46ffb500e3f2ce47e
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
new file mode 100644
index 00000000000..adc4b41f091
--- /dev/null
+++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd6071d697d0aab7833b6
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/espanol/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml b/curriculum/challenges/espanol/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml
new file mode 100644
index 00000000000..3ea323ff9d9
--- /dev/null
+++ b/curriculum/challenges/espanol/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml
@@ -0,0 +1,10 @@
+---
+id: 651dd7e01d697d0aab7833b7
+title: A2 English for Developers Certification
+certification: a2-english-for-developers
+challengeType: 7
+isPrivate: true
+tests:
+ -
+ id: 651dd3e06ffb500e3f2ce478
+ title: Challenge 1
diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
index 13b80519947..5a3f4bdb6f8 100644
--- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
+++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
@@ -81,13 +81,13 @@ El objeto `foods` debe tener una clave `strawberries` con el valor de `27`.
assert(foods.strawberries === 27);
```
-Los pares clave-valor deben establecerse usando notación de puntos o de corchetes.
+The definition of the `foods` object should not be changed.
```js
assert(
- code.search(/bananas:/) === -1 &&
- code.search(/grapes:/) === -1 &&
- code.search(/strawberries:/) === -1
+ code.search(/let foods/) === -1 &&
+ code.search(/const\s+foods\s*=\s*{\s*apples:\s*25,\s*oranges:\s*32,\s*plums:\s*28\s*};/
+) !== -1
);
```
@@ -96,7 +96,7 @@ assert(
## --seed-contents--
```js
-let foods = {
+const foods = {
apples: 25,
oranges: 32,
plums: 28
@@ -112,7 +112,7 @@ console.log(foods);
# --solutions--
```js
-let foods = {
+const foods = {
apples: 25,
oranges: 32,
plums: 28
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
index a08095eba30..ed704e2af9d 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
@@ -11,24 +11,43 @@ Al igual que los otros elementos `input` y `label`, enlace el `textarea` con su
# --hints--
-Debes dar al elemento `label` un atributo `for`.
+You should give the `textarea` element an `id` attribute.
```js
-assert.notEmpty(document.querySelectorAll('.formrow > .question-block')?.[1]?.querySelector('label')?.htmlFor);
+assert.notEmpty(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id);
```
-Debes dar al elemento `textarea` un atributo `id` que coincida con el atributo `for` del elemento `label`.
+You cannot include spaces in the `id` for the `textarea` element.
+
+```js
+assert.match(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id, /^\S+$/);
+```
+
+You must choose a different `id` for the `textarea` element because another element is using that `id`.
+
+```js
+const textareaId = document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id;
+assert.equal(document.querySelectorAll(`[id='${textareaId.replaceAll(/(['\\])/g, "\\$1")}']`).length, 1);
+```
+
+You should give the `label` element a `for` attribute matching the `id` of the `textarea` element.
```js
assert.equal(document.querySelectorAll('.formrow > .question-block')?.[1]?.querySelector('label')?.htmlFor, document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id);
```
-Debes dar al elemento `textarea` un atributo `name`.
+You should give the `textarea` element a `name` attribute.
```js
assert.notEmpty(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.name);
```
+You should use at least one non-space character in the `name` attribute for the `textarea`.
+
+```js
+assert.match(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.name, /\S/);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
index 1f1ae4ab4b6..f95f1fe93df 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
@@ -148,10 +148,10 @@ assert.equal(document.querySelector('button[type="submit"]')?.textContent ?? doc
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
index b848ddf581f..69e97602851 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
@@ -48,6 +48,20 @@ const itemPMarginBottom = new __helpers.CSSHelp(document).getStyle('.item p')?.g
assert(itemPMarginBottom === '5px');
```
+Your `p` elements nested in your `.item` elements should not have a `margin-left` set.
+
+```js
+const itemPMarginLeft = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-left');
+assert(!itemPMarginLeft);
+```
+
+Your `p` elements nested in your `.item` elements should not have a `margin-right` set.
+
+```js
+const itemPMarginRight = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-right');
+assert(!itemPMarginRight);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
index 3a97ad66a53..4701db79565 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
@@ -9,7 +9,7 @@ dashedName: step-28
Currently when someone submit the form, they can submit it without checking the radio inputs. Although you had used `required` attribute to indicate the the input is required previously, this can't work in this case, because adding required to both inputs, will convey the wrong information to the form users.
-To solve this, you can provide context of what is needed by adding `legend` element below the second `fieldset` with text `Account type (required)`, then add `checked` attribute to the `Personal` input to make sure that the form is submitted with the required data in it.
+To solve this, you can provide context of what is needed by adding a `legend` element with text `Account type (required)` before the `label` elements within the second `fieldset`. Then add the `checked` attribute to the `Personal` input to ensure the form is submitted with the required data in it.
# --hints--
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
index 16fcfd166a3..a0733f1687a 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
@@ -17,19 +17,12 @@ Your should have a `link` element.
assert.match(code, //)
```
-Your `link` element should have an `href` attribute with the value `./styles.css`.
-
-```js
-assert.match(code, //)
-```
-
-
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
index 7c88ce9baa8..0e57e0aebc2 100644
--- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
@@ -65,14 +65,16 @@ body {
background-color: #c9d2fc;
}
+--fcc-editable-region--
.cat-head {
- --fcc-editable-region--
- --fcc-editable-region--
+
+
background: linear-gradient(#5e5e5e 85%, #45454f 100%);
width: 205px;
height: 180px;
border: 1px solid #000;
border-radius: 46%;
}
+--fcc-editable-region--
```
diff --git a/curriculum/challenges/espanol/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md b/curriculum/challenges/espanol/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
index b2dda0bcbc7..dc1e0d1e25d 100644
--- a/curriculum/challenges/espanol/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
+++ b/curriculum/challenges/espanol/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
@@ -13,6 +13,12 @@ Set the `hello` variable to "world". Then print the value.
# --hints--
+The source code should include `one = 2`
+
+```js
+assert(code.match(/one\s*=\s*2/))
+```
+
The `hello` variable should equal "world".
```js
@@ -27,12 +33,6 @@ The `hello` variable should equal "world".
--fcc-editable-region--
one = 1
hello = "goodbye"
-def a_function():
- local_thing = "world"
- print(local_thing)
-
-a_function()
-
print(hello)
--fcc-editable-region--
```
@@ -40,7 +40,7 @@ print(hello)
# --solutions--
```py
-one = 1
+one = 2
hello = "world"
print(hello)
```
diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
new file mode 100644
index 00000000000..a8abd3ff027
--- /dev/null
+++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
@@ -0,0 +1,93 @@
+---
+id: 651dd5ae6ffb500e3f2ce47c
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+```js
+console.log('with code');
+```
+
+***
+
+Making a statement based on her assumption.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Expressing a possibility.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
new file mode 100644
index 00000000000..27f5dcb5e42
--- /dev/null
+++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5d86ffb500e3f2ce47d
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
new file mode 100644
index 00000000000..a79f83d6f5a
--- /dev/null
+++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd5f41d697d0aab7833b5
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
new file mode 100644
index 00000000000..13028d7c28a
--- /dev/null
+++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
@@ -0,0 +1,15 @@
+---
+id: 651dd3e06ffb500e3f2ce478
+title: "Dialogue: Introducing"
+challengeType: 21
+videoId: nLDychdBwUg
+dashedName: dialogue-introducing
+---
+
+# --description--
+
+What the video above to understand the context of the upcoming lessons.
+
+# --assignment--
+
+Watch the video
diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
new file mode 100644
index 00000000000..3d67f522c07
--- /dev/null
+++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
@@ -0,0 +1,49 @@
+---
+id: 6543abeff5f028dba112f278
+title: "I am: I'm"
+challengeType: 19
+dashedName: i-am-im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, the verb `to be` is used to talk about identities, characteristics, and more. The contraction `I'm` is a combination of `I` and `am`. Here, Tom uses it to introduce himself.
+
+# --question--
+
+## --text--
+
+Which operation correctly expands the contraction `I'm`?
+
+## --answers--
+
+`I is`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I am`
+
+***
+
+`I was`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I have`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+## --video-solution--
+
+2
diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
new file mode 100644
index 00000000000..a2aa6a8f717
--- /dev/null
+++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
@@ -0,0 +1,21 @@
+---
+id: 6543abf5f5f028dba112f279
+title: I'm
+challengeType: 22
+dashedName: im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+The word `I'm` is a contraction of `I am`. Contractions are a way to shorten common combinations of words, especially with verbs.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, that's right! _ Tom McKenzie.`
+
+## --blanks--
+
+`I'm`
diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
new file mode 100644
index 00000000000..3b8b7cff0bd
--- /dev/null
+++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
@@ -0,0 +1,53 @@
+---
+id: 6537e6ece93e5724eeb27c54
+title: Name and Job Title
+challengeType: 19
+dashedName: name-and-job-title
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, we often mention our job or role in a company by saying, `I'm [Name], the [Job title].` This lets others know our position or role.
+
+# --question--
+
+## --text--
+
+What is Maria's job role at the company?
+
+## --answers--
+
+`Graphic Designer`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Member`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Lead`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`CEO`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
new file mode 100644
index 00000000000..2a3c405b6ad
--- /dev/null
+++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
@@ -0,0 +1,33 @@
+---
+id: 651dd5386ffb500e3f2ce47a
+title: Right
+challengeType: 22
+dashedName: right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, to check or confirm something people sometimes use tag questions. For example, `You are a programmer, right?` Here, `right?` is used as a tag to check or confirm the previous statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, _?`
+
+## --blanks--
+
+`are`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
+
+***
+
+`right`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
new file mode 100644
index 00000000000..2ae09721cbf
--- /dev/null
+++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
@@ -0,0 +1,33 @@
+---
+id: 6543aa3df5f028dba112f275
+title: Team Lead
+challengeType: 22
+dashedName: team-lead
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+A `team lead` is a person who leads or manages a team. In the dialogue, Maria introduces herself as the team lead, meaning she has a leadership role.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`I'm Maria, the _ _.`
+
+## --blanks--
+
+team
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+lead
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
new file mode 100644
index 00000000000..3349bcfead9
--- /dev/null
+++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
@@ -0,0 +1,25 @@
+---
+id: 6543aae6f5f028dba112f277
+title: "That's Right: 2"
+challengeType: 22
+dashedName: thats-right-2
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+Placeholder Description \_\_\_ \_\_
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, _ _! I'm Tom McKenzie. It's a pleasure to meet you.`
+
+## --blanks--
+
+`that's`
+
+***
+
+`right`
diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
new file mode 100644
index 00000000000..e85982fd561
--- /dev/null
+++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
@@ -0,0 +1,49 @@
+---
+id: 6543aaa9f5f028dba112f276
+title: That's Right
+challengeType: 19
+dashedName: thats-right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+When someone makes a correct assumption or guess about you, you can confirm it using phrases like `that's right`. It's a way of agreeing or saying yes to what is said.
+
+# --question--
+
+## --text--
+
+Which phrase does Tom use to confirm Maria's statement about him?
+
+## --answers--
+
+`that's wrong`
+
+### --feedback--
+
+`That's wrong` is used to disagree.
+
+***
+
+`that's okay`
+
+### --feedback--
+
+`that's okay` usually shows acceptance, not confirmation.
+
+***
+
+`that's right`
+
+***
+
+`that's left`
+
+### --feedback--
+
+`that's left` refers to a direction, not confirmation.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
new file mode 100644
index 00000000000..dd254987129
--- /dev/null
+++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
@@ -0,0 +1,27 @@
+---
+id: 651dd5296ffb500e3f2ce479
+title: You Are
+challengeType: 22
+dashedName: you-are
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, when making introductions or identifying someone, you use the verb `to be`. In this case, `You are` is used to address the person Maria is talking to and affirmatively identify their occupation.
+
+Maria is introducing herself and confirming Tom's job role. `Are` is used in the present affirmative to make a statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, right?`
+
+## --blanks--
+
+are
+
+### --feedback--
+
+The verb `to be` is an irregular verb. When conjugated with the pronoun `you`, `be` becomes `are`. For example: `You are an English learner.`
diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
new file mode 100644
index 00000000000..7aa1e30008d
--- /dev/null
+++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5a46ffb500e3f2ce47b
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+***
+
+Giving a job description.
+
+***
+
+Making a statement based on her assumption.
+
+***
+
+Expressing a possibility.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
new file mode 100644
index 00000000000..2ee50fe5647
--- /dev/null
+++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5e46ffb500e3f2ce47e
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
new file mode 100644
index 00000000000..adc4b41f091
--- /dev/null
+++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd6071d697d0aab7833b6
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/german/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml b/curriculum/challenges/german/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml
new file mode 100644
index 00000000000..3ea323ff9d9
--- /dev/null
+++ b/curriculum/challenges/german/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml
@@ -0,0 +1,10 @@
+---
+id: 651dd7e01d697d0aab7833b7
+title: A2 English for Developers Certification
+certification: a2-english-for-developers
+challengeType: 7
+isPrivate: true
+tests:
+ -
+ id: 651dd3e06ffb500e3f2ce478
+ title: Challenge 1
diff --git a/curriculum/challenges/german/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md b/curriculum/challenges/german/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
index 06ce6cdaf4f..4df2fe64c78 100644
--- a/curriculum/challenges/german/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
+++ b/curriculum/challenges/german/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
@@ -81,13 +81,13 @@ Das Objekt `foods` sollte einen Schlüssel `strawberries` mit einem Wert von `27
assert(foods.strawberries === 27);
```
-Die Schlüssel-Wert-Paare sollten mit Punkt- oder Klammernotation angegeben werden.
+The definition of the `foods` object should not be changed.
```js
assert(
- code.search(/bananas:/) === -1 &&
- code.search(/grapes:/) === -1 &&
- code.search(/strawberries:/) === -1
+ code.search(/let foods/) === -1 &&
+ code.search(/const\s+foods\s*=\s*{\s*apples:\s*25,\s*oranges:\s*32,\s*plums:\s*28\s*};/
+) !== -1
);
```
@@ -96,7 +96,7 @@ assert(
## --seed-contents--
```js
-let foods = {
+const foods = {
apples: 25,
oranges: 32,
plums: 28
@@ -112,7 +112,7 @@ console.log(foods);
# --solutions--
```js
-let foods = {
+const foods = {
apples: 25,
oranges: 32,
plums: 28
diff --git a/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-25-5-clock.md b/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-25-5-clock.md
index f8d18917260..6cc43b87004 100644
--- a/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-25-5-clock.md
+++ b/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-25-5-clock.md
@@ -12,9 +12,9 @@ dashedName: build-a-25--5-clock
**Objective:** Build an app that is functionally similar to this: https://25--5-clock.freecodecamp.rocks.
-Fulfill the below user stories and get all of the tests to pass. Use whichever libraries or APIs you need. Give it your own personal style.
+Fulfill the below user stories and get all of the tests to pass. Use whichever libraries or APIs you need. Gib dem Ganzen deinen persönlichen Stil.
-You can use any mix of HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux, and jQuery to complete this project. You should use a frontend framework (like React for example) because this section is about learning frontend frameworks. Additional technologies not listed above are not recommended and using them is at your own risk. We are looking at supporting other frontend frameworks like Angular and Vue, but they are not currently supported. We will accept and try to fix all issue reports that use the suggested technology stack for this project. Happy coding!
+You can use any mix of HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux, and jQuery to complete this project. You should use a frontend framework (like React for example) because this section is about learning frontend frameworks. Additional technologies not listed above are not recommended and using them is at your own risk. We are looking at supporting other frontend frameworks like Angular and Vue, but they are not currently supported. We will accept and try to fix all issue reports that use the suggested technology stack for this project. Viel Spaß beim Programmieren!
**User Story #1:** I can see an element with `id="break-label"` that contains a string (e.g. "Break Length").
diff --git a/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-drum-machine.md b/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-drum-machine.md
index a43412c8376..6d775a25ff8 100644
--- a/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-drum-machine.md
+++ b/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-drum-machine.md
@@ -11,15 +11,15 @@ dashedName: build-a-drum-machine
**Objective:** Build an app that is functionally similar to this: https://drum-machine.freecodecamp.rocks/.
-Fulfill the below user stories and get all of the tests to pass. Use whichever libraries or APIs you need. Give it your own personal style.
+Fulfill the below user stories and get all of the tests to pass. Use whichever libraries or APIs you need. Gib dem Ganzen deinen persönlichen Stil.
-You can use any mix of HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux, and jQuery to complete this project. You should use a frontend framework (like React for example) because this section is about learning frontend frameworks. Additional technologies not listed above are not recommended and using them is at your own risk. We are looking at supporting other frontend frameworks like Angular and Vue, but they are not currently supported. We will accept and try to fix all issue reports that use the suggested technology stack for this project. Happy coding!
+Du kannst eine beliebige Mischung aus HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux und jQuery verwenden, um dieses Projekt fertigzustellen. Du solltest ein Frontend-Framework (wie zum Beispiel React) verwenden, da es in diesem Abschnitt um das Lernen von Frontend-Frameworks geht. Zusätzliche Technologien, die oben nicht aufgeführt sind, werden nicht empfohlen und ihre Verwendung erfolgt auf eigene Gefahr. We are looking at supporting other frontend frameworks like Angular and Vue, but they are not currently supported. Wir sind offen für Fehlermeldungen und kümmern uns um all jene, die die vorgeschlagenen Technologien für dieses Projekt verwenden. Viel Spaß beim Programmieren!
-**User Story #1:** I should be able to see an outer container with a corresponding `id="drum-machine"` that contains all other elements.
+**User Story #1:** Ich sollte einen äußeren Container mit einer zugehörigen `id="drum-machine"` sehen, der alle anderen Elemente enthält.
**User Story #2:** Within `#drum-machine` I can see an element with a corresponding `id="display"`.
-**User Story #3:** Within `#drum-machine` I can see 9 clickable drum pad elements, each with a class name of `drum-pad`, a unique id that describes the audio clip the drum pad will be set up to trigger, and an inner text that corresponds to one of the following keys on the keyboard: `Q`, `W`, `E`, `A`, `S`, `D`, `Z`, `X`, `C`. The drum pads MUST be in this order.
+**User Story #3:** Within `#drum-machine` I can see 9 clickable drum pad elements, each with a class name of `drum-pad`, a unique id that describes the audio clip the drum pad will be set up to trigger, and an inner text that corresponds to one of the following keys on the keyboard: `Q`, `W`, `E`, `A`, `S`, `D`, `Z`, `X`, `C`. Die Drum Pads MÜSSEN in dieser Reihenfolge angeordnet sein.
**User Story #4:** Within each `.drum-pad`, there should be an HTML5 `audio` element which has a `src` attribute pointing to an audio clip, a class name of `clip`, and an id corresponding to the inner text of its parent `.drum-pad` (e.g. `id="Q"`, `id="W"`, `id="E"` etc.).
diff --git a/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-javascript-calculator.md b/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-javascript-calculator.md
index d47111234e5..d7f93c33cf7 100644
--- a/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-javascript-calculator.md
+++ b/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-javascript-calculator.md
@@ -11,9 +11,9 @@ dashedName: build-a-javascript-calculator
**Objective:** Build an app that is functionally similar to this: https://javascript-calculator.freecodecamp.rocks/.
-Fulfill the below user stories and get all of the tests to pass. Use whichever libraries or APIs you need. Give it your own personal style.
+Fulfill the below user stories and get all of the tests to pass. Use whichever libraries or APIs you need. Gib dem Ganzen deinen persönlichen Stil.
-You can use any mix of HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux, and jQuery to complete this project. You should use a frontend framework (like React for example) because this section is about learning frontend frameworks. Additional technologies not listed above are not recommended and using them is at your own risk. We are looking at supporting other frontend frameworks like Angular and Vue, but they are not currently supported. We will accept and try to fix all issue reports that use the suggested technology stack for this project. Happy coding!
+You can use any mix of HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux, and jQuery to complete this project. You should use a frontend framework (like React for example) because this section is about learning frontend frameworks. Additional technologies not listed above are not recommended and using them is at your own risk. We are looking at supporting other frontend frameworks like Angular and Vue, but they are not currently supported. We will accept and try to fix all issue reports that use the suggested technology stack for this project. Viel Spaß beim Programmieren!
**User Story #1:** My calculator should contain a clickable element containing an `=` (equal sign) with a corresponding `id="equals"`.
@@ -52,7 +52,7 @@ You can use any mix of HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux, and
- **Unmittelbare Ausführungslogik:** `11.5`
- **Formel-/Ausdrucklogik:** `32.5`
-You can build your project by using this CodePen template and clicking `Save` to create your own pen. Or you can use this CDN link to run the tests in any environment you like: `https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js`
+Du kannst dein Projekt erstellen, indem du diese CodePen-Vorlage verwendest und auf `Save` klickst, um deinen eigenen Pen zu erstellen. Or you can use this CDN link to run the tests in any environment you like: `https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js`
Once you're done, submit the URL to your working project with all its tests passing.
diff --git a/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-markdown-previewer.md b/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-markdown-previewer.md
index 564169cbe5e..758e2967684 100644
--- a/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-markdown-previewer.md
+++ b/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-markdown-previewer.md
@@ -11,9 +11,9 @@ dashedName: build-a-markdown-previewer
**Objective:** Build an app that is functionally similar to this: https://markdown-previewer.freecodecamp.rocks/.
-Fulfill the below user stories and get all of the tests to pass. Use whichever libraries or APIs you need. Give it your own personal style.
+Fulfill the below user stories and get all of the tests to pass. Use whichever libraries or APIs you need. Gib dem Ganzen deinen persönlichen Stil.
-You can use any mix of HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux, and jQuery to complete this project. You should use a frontend framework (like React for example) because this section is about learning frontend frameworks. Additional technologies not listed above are not recommended and using them is at your own risk. We are looking at supporting other frontend frameworks like Angular and Vue, but they are not currently supported. We will accept and try to fix all issue reports that use the suggested technology stack for this project. Happy coding!
+Du kannst eine beliebige Mischung aus HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux und jQuery verwenden, um dieses Projekt fertigzustellen. Du solltest ein Frontend-Framework (wie zum Beispiel React) verwenden, da es in diesem Abschnitt um das Lernen von Frontend-Frameworks geht. Additional technologies not listed above are not recommended and using them is at your own risk. We are looking at supporting other frontend frameworks like Angular and Vue, but they are not currently supported. Wir sind offen für Fehlermeldungen und kümmern uns um all jene, die die vorgeschlagenen Technologien für dieses Projekt verwenden. Viel Spaß beim Programmieren!
**User Story #1:** I can see a `textarea` element with a corresponding `id="editor"`.
diff --git a/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-random-quote-machine.md b/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-random-quote-machine.md
index 632feeb6233..ad621156d67 100644
--- a/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-random-quote-machine.md
+++ b/curriculum/challenges/german/03-front-end-development-libraries/front-end-development-libraries-projects/build-a-random-quote-machine.md
@@ -9,17 +9,17 @@ dashedName: build-a-random-quote-machine
# --description--
**Note:** **React 18 has known incompatibilities with the tests for this project (see [issue](https://github.com/freeCodeCamp/freeCodeCamp/issues/45922))**
-**Objective:** Build an app that is functionally similar to this: https://random-quote-machine.freecodecamp.rocks/.
+**Aufgabe:** Erstelle eine Anwendung, die eine ähnliche Funktionalität wie https://random-quote-machine.freecodecamp.rocks/ aufweist.
-Fulfill the below user stories and get all of the tests to pass. Use whichever libraries or APIs you need. Give it your own personal style.
+Fulfill the below user stories and get all of the tests to pass. Use whichever libraries or APIs you need. Gib dem Ganzen deinen persönlichen Stil.
-You can use any mix of HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux, and jQuery to complete this project. You should use a frontend framework (like React for example) because this section is about learning frontend frameworks. Additional technologies not listed above are not recommended and using them is at your own risk. We are looking at supporting other frontend frameworks like Angular and Vue, but they are not currently supported. We will accept and try to fix all issue reports that use the suggested technology stack for this project. Happy coding!
+Du kannst eine beliebige Mischung aus HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux und jQuery verwenden, um dieses Projekt fertigzustellen. Du solltest ein Frontend-Framework (wie zum Beispiel React) verwenden, da es in diesem Abschnitt um das Lernen von Frontend-Frameworks geht. Zusätzliche Technologien, die oben nicht aufgeführt sind, werden nicht empfohlen und ihre Verwendung erfolgt auf eigene Gefahr. Wir prüfen die Unterstützung anderer Frontend-Frameworks wie Angular und Vue, aber sie werden derzeit nicht unterstützt. We will accept and try to fix all issue reports that use the suggested technology stack for this project. Viel Spaß beim Programmieren!
**User Story #1:** I can see a wrapper element with a corresponding `id="quote-box"`.
-**User Story #2:** Within `#quote-box`, I can see an element with a corresponding `id="text"`.
+**User Story #2:** Innerhalb `#quote-box` sehe ich ein Element mit einer entsprechenden `id="text"`.
-**User Story #3:** Within `#quote-box`, I can see an element with a corresponding `id="author"`.
+**User Story #3:** Innerhalb `#quote-box` sehe ich ein Element mit einer entsprechenden `id="author"`.
**User Story #4:** Within `#quote-box`, I can see a clickable element with a corresponding `id="new-quote"`.
@@ -41,7 +41,7 @@ You can build your project by Create React App bereits konfiguriert und einsatzbereit.
diff --git a/curriculum/challenges/german/03-front-end-development-libraries/react/create-a-component-with-composition.md b/curriculum/challenges/german/03-front-end-development-libraries/react/create-a-component-with-composition.md
index 4eb3cfb63e2..980f4f3409d 100644
--- a/curriculum/challenges/german/03-front-end-development-libraries/react/create-a-component-with-composition.md
+++ b/curriculum/challenges/german/03-front-end-development-libraries/react/create-a-component-with-composition.md
@@ -28,7 +28,7 @@ Wenn React auf ein benutzerdefiniertes HTML-Tag stößt, das auf eine andere Kom
Im Code-Editor gibt es eine einfache funktionale Komponente namens `ChildComponent` und eine Klassenkomponente namens `ParentComponent`. Setze die beiden zusammen, indem du die Kinderkomponente (`ChildComponent`) innerhalb der Elternkomponente (`ParentComponent`) renderst. Achte darauf, dass du den `ChildComponent`-Tag mit einem Schrägstrich schließt.
-**Note:** `ChildComponent` is defined with an ES6 arrow function because this is a very common practice when using React.
+**Hinweis:** `ChildComponent` wird mit einer ES6-Pfeilfunktion (arrow function) definiert, weil dies eine sehr gängige Praxis bei der Verwendung von React ist.
# --hints--
diff --git a/curriculum/challenges/german/03-front-end-development-libraries/react/introducing-inline-styles.md b/curriculum/challenges/german/03-front-end-development-libraries/react/introducing-inline-styles.md
index 80021ec89fe..cb22eac51b1 100644
--- a/curriculum/challenges/german/03-front-end-development-libraries/react/introducing-inline-styles.md
+++ b/curriculum/challenges/german/03-front-end-development-libraries/react/introducing-inline-styles.md
@@ -30,7 +30,7 @@ Hast du bemerkt, dass wir die Eigenschaft `fontSize` in CamelCase schreiben? Das
Füge im Code-Editor ein `style`-Attribut zum `div` hinzu, um dem Text eine rote Farbe und eine Schriftgröße von `72px` zu geben.
-Note that you can optionally set the font size to be a number, omitting the units `px`, or write it as `"72px"`.
+Beachte, dass du die Schriftgröße optional als Zahl angeben kannst, indem du die Einheiten `px` weglässt, oder sie als `"72px"` schreibst.
# --hints--
Die Komponente sollte ein `div`-Element darstellen.
diff --git a/curriculum/challenges/german/03-front-end-development-libraries/react/pass-an-array-as-props.md b/curriculum/challenges/german/03-front-end-development-libraries/react/pass-an-array-as-props.md
index 38b9df1ca17..84b919a4abc 100644
--- a/curriculum/challenges/german/03-front-end-development-libraries/react/pass-an-array-as-props.md
+++ b/curriculum/challenges/german/03-front-end-development-libraries/react/pass-an-array-as-props.md
@@ -22,15 +22,15 @@ Die Kindkomponente hat dann Zugriff auf die Array-Eigenschaft `colors`. Array-Me
const ChildComponent = (props) =>
{props.colors.join(', ')}
```
-This will join all `colors` array items into a comma separated string and produce: `
green, blue, red
`. Later, we will learn about other common methods to render arrays of data in React.
+Dies fügt alle `colors`-Arrayelemente zu einem durch Kommas getrennten String zusammen und erzeugt: `
green, blue, red
`. Später werden wir andere gängige Methoden zum Rendern von Datenarrays in React kennenlernen.
# --instructions--
-There are `List` and `ToDo` components in the code editor. When rendering each `List` from the `ToDo` component, pass in a `tasks` property assigned to an array of to-do tasks, for example `["walk dog", "workout"]`. Then access this `tasks` array in the `List` component, showing its value within the `p` element. Use `join(", ")` to display the `props.tasks` array in the `p` element as a comma-separated list. Today's list should have at least 2 tasks and tomorrow's should have at least 3 tasks.
+Im Code-Editor gibt es `List`- und `ToDo`-Komponenten. When rendering each `List` from the `ToDo` component, pass in a `tasks` property assigned to an array of to-do tasks, for example `["walk dog", "workout"]`. Then access this `tasks` array in the `List` component, showing its value within the `p` element. Verwende `join(", ")`, um das `props.tasks`-Array im `p`-Element als kommagetrennte Liste anzuzeigen. Die heutige Liste sollte mindestens 2 Aufgaben und die Liste von morgen sollte mindestens 3 Aufgaben enthalten.
# --hints--
-The `ToDo` component should return a single outer `div`.
+Die `ToDo`-Komponente sollte ein einzelnes äußeres `div` zurückgeben.
```js
assert(
@@ -63,7 +63,7 @@ assert(
);
```
-Both instances of the `List` component should have a property called `tasks` and `tasks` should be of type array.
+Beide Instanzen der `List`-Komponente sollten eine Eigenschaft namens `tasks` enthalten und `tasks` sollte vom Typ Array sein.
```js
assert(
@@ -77,7 +77,7 @@ assert(
);
```
-The first `List` component representing the tasks for today should have 2 or more items.
+Die erste `List`-Komponente, die die Aufgaben für den heutigen Tag darstellt, sollte 2 oder mehr Elemente enthalten.
```js
assert(
@@ -88,7 +88,7 @@ assert(
);
```
-The second `List` component representing the tasks for tomorrow should have 3 or more items.
+Die zweite `List`-Komponente, die die Aufgaben für den morgigen Tag darstellt, sollte 3 oder mehr Elemente enthalten.
```js
assert(
@@ -99,7 +99,7 @@ assert(
);
```
-The `List` component should render the value from the `tasks` prop in the `p` tag.
+Die `List`-Komponente sollte den Wert aus der `tasks`-Eigenschaft im `p`-Tag rendern.
```js
assert(
diff --git a/curriculum/challenges/german/03-front-end-development-libraries/redux/write-a-counter-with-redux.md b/curriculum/challenges/german/03-front-end-development-libraries/redux/write-a-counter-with-redux.md
index 2b474fbcf85..16ec6a91e13 100644
--- a/curriculum/challenges/german/03-front-end-development-libraries/redux/write-a-counter-with-redux.md
+++ b/curriculum/challenges/german/03-front-end-development-libraries/redux/write-a-counter-with-redux.md
@@ -28,19 +28,19 @@ Der Action Creator `decAction` sollte ein Action-Objekt mit `type` gleich dem We
assert(decAction().type === DECREMENT);
```
-Running `store.getState()` should return a number
+Die Ausführung von `store.getState()` sollte eine Zahl zurückgeben.
```js
assert(typeof store.getState() === 'number');
```
-The Redux store should initialize with a `state` of 0.
+Der Redux-Store sollte mit einem `state` von 0 initialisieren.
```js
assert(_store.getState() === 0);
```
-Dispatching `incAction` on the Redux store should increment the `state` by 1.
+Das Senden von `incAction` an den Redux-Store sollte den `state` um 1 erhöhen.
```js
assert(
@@ -53,7 +53,7 @@ assert(
);
```
-Dispatching `decAction` on the Redux store should decrement the `state` by 1.
+Das Senden von `decAction` an den Redux-Store sollte den `state` um 1 verringern.
```js
assert(
@@ -66,7 +66,7 @@ assert(
);
```
-`counterReducer` should be a function
+`counterReducer` sollte eine Funktion sein
```js
assert(typeof counterReducer === 'function');
diff --git a/curriculum/challenges/german/03-front-end-development-libraries/sass/use-each-to-map-over-items-in-a-list.md b/curriculum/challenges/german/03-front-end-development-libraries/sass/use-each-to-map-over-items-in-a-list.md
index 1d4c63e144a..7afb40fa942 100644
--- a/curriculum/challenges/german/03-front-end-development-libraries/sass/use-each-to-map-over-items-in-a-list.md
+++ b/curriculum/challenges/german/03-front-end-development-libraries/sass/use-each-to-map-over-items-in-a-list.md
@@ -44,7 +44,7 @@ Beachte, dass die Variable `$key` benötigt wird, um die Schlüssel (Keys) in de
# --instructions--
-Write an `@each` directive that goes through a list: `blue, black, red` and assigns each variable to a `.color-bg` class, where the `color` part changes for each item to the respective color. Each class should set the `background-color` to the respective color as well.
+Schreibe eine `@each`-Richtlinie, die eine Liste durchläuft: `blue, black, red` und jede Variable einer `.color-bg`-Klasse zuweist, wobei der `color`-Teil für jedes Element in die jeweilige Farbe wechselt. Jede Klasse sollte auch die `background-color` auf die jeweilige Farbe setzen.
# --hints--
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
index 4b13b688406..db5490fe3b7 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
@@ -11,24 +11,43 @@ Verknüpfe, wie auch bei den anderen `input`- und `label`-Elementen, `textarea`
# --hints--
-Du solltest dem `label`-Element ein `for`-Attribut geben.
+You should give the `textarea` element an `id` attribute.
```js
-assert.notEmpty(document.querySelectorAll('.formrow > .question-block')?.[1]?.querySelector('label')?.htmlFor);
+assert.notEmpty(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id);
```
-Du solltest dem `textarea`-Element eine `id` geben, die dem `for`-Attribut des `label`-Elements entspricht.
+You cannot include spaces in the `id` for the `textarea` element.
+
+```js
+assert.match(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id, /^\S+$/);
+```
+
+You must choose a different `id` for the `textarea` element because another element is using that `id`.
+
+```js
+const textareaId = document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id;
+assert.equal(document.querySelectorAll(`[id='${textareaId.replaceAll(/(['\\])/g, "\\$1")}']`).length, 1);
+```
+
+You should give the `label` element a `for` attribute matching the `id` of the `textarea` element.
```js
assert.equal(document.querySelectorAll('.formrow > .question-block')?.[1]?.querySelector('label')?.htmlFor, document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id);
```
-Du solltest dem `textarea`-Element ein `name`-Attribut geben.
+You should give the `textarea` element a `name` attribute.
```js
assert.notEmpty(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.name);
```
+You should use at least one non-space character in the `name` attribute for the `textarea`.
+
+```js
+assert.match(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.name, /\S/);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
index 2cf45dd65b4..ba9a61e37d1 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
@@ -148,10 +148,10 @@ assert.equal(document.querySelector('button[type="submit"]')?.textContent ?? doc
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f356ed6199b0cdef1d2be8f.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f356ed6199b0cdef1d2be8f.md
index 940b4ef2377..67313c0aa2c 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f356ed6199b0cdef1d2be8f.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f356ed6199b0cdef1d2be8f.md
@@ -7,7 +7,7 @@ dashedName: step-26
# --description--
-Bisher hast du Typ- und ID-Selektoren für verschiedene Style-Elemente verwendet. However, it is more common to use a different selector to style your elements.
+Bisher hast du Typ- und ID-Selektoren für verschiedene Style-Elemente verwendet. Allerdings ist es üblicher einen anderen Selektor zu verwenden, um dein Element zu gestalten.
Ein Klassenselektor ist durch einen Namen mit einem Punkt definiert, der sich direkt vor ihm befindet, wie folgendes Beispiel:
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f356ed63c7807a4f1e6d054.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f356ed63c7807a4f1e6d054.md
index c63771ad5bf..c5b6d771ab9 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f356ed63c7807a4f1e6d054.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f356ed63c7807a4f1e6d054.md
@@ -17,7 +17,7 @@ You can use the `id` selector to target a specific element with an `id` attribut
}
```
-Use the `#menu` selector to give your element a width of `300px`.
+Verwende den `#menu`-Selektor, um deinem Element eine Breite von `300px` zuzuweisen.
# --hints--
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f356ed69db0a491745e2bb6.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f356ed69db0a491745e2bb6.md
index 151c02bbbc1..e07b3d8581f 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f356ed69db0a491745e2bb6.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f356ed69db0a491745e2bb6.md
@@ -7,7 +7,7 @@ dashedName: step-27
# --description--
-To apply the class's styling to the `div` element, remove the `id` attribute and add a `class` attribute to the `div` element's opening tag. Stelle sicher, dass der Klassenwert auf `menu` gesetzt ist.
+Um das Styling der Klasse auf das `div`-Element anzuwenden, entferne das `id`-Attribut und füge ein `class`-Attribut zum öffnenden Tag des `div`-Elements hinzu. Stelle sicher, dass der Klassenwert auf `menu` gesetzt ist.
# --hints--
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
index d50e6915370..6f43597b8ec 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
@@ -9,7 +9,7 @@ dashedName: step-73
Wenn man sich auf die Menüpunkte und Preise konzentriert, gibt es zwischen den einzelnen Zeilen eine große Lücke.
-Use the existing selector that targets all the `p` elements nested in elements with the class named `item` and set their top and bottom margin to be `5px`.
+Verwende den vorhandenen Selektor, der alle `p`-Elemente auswählt, die in Elemente mit der Klasse namens `item` eingebettet sind, und setze deren obere und untere Margin auf `5px`.
# --hints--
@@ -48,6 +48,20 @@ const itemPMarginBottom = new __helpers.CSSHelp(document).getStyle('.item p')?.g
assert(itemPMarginBottom === '5px');
```
+Your `p` elements nested in your `.item` elements should not have a `margin-left` set.
+
+```js
+const itemPMarginLeft = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-left');
+assert(!itemPMarginLeft);
+```
+
+Your `p` elements nested in your `.item` elements should not have a `margin-right` set.
+
+```js
+const itemPMarginRight = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-right');
+assert(!itemPMarginRight);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6153897c27f6334716ee5abe.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6153897c27f6334716ee5abe.md
index 03cdb951b5b..627577d266b 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6153897c27f6334716ee5abe.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6153897c27f6334716ee5abe.md
@@ -7,7 +7,7 @@ dashedName: step-14
# --description--
-Flexbox is a one-dimensional CSS layout that can control the way items are spaced out and aligned within a container.
+Flexbox ist ein eindimensionales CSS-Layout, das steuern kann, wie Elemente innerhalb eines Containers angeordnet und ausgerichtet sind.
Um es zu verwenden, weise einem Element eine `display`-Eigenschaft mit `flex` als Wert zu. Das wird das Element zu einem flex container machen. Alle direkt untergeordneten Elemente eines Flex-Containers werden flex items genannt.
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6153a04847abee57a3a406ac.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6153a04847abee57a3a406ac.md
index 05f6c233dbb..c3af9576245 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6153a04847abee57a3a406ac.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/6153a04847abee57a3a406ac.md
@@ -9,7 +9,7 @@ dashedName: step-21
Deine Bilder benötigen etwas Abstand dazwischen.
-The `gap` CSS shorthand property sets the gaps, also known as gutters, between rows and columns. Die `gap`-Eigenschaft und ihre `row-gap` und `column-gap`-Untereigenschaften bieten diese Funktionalität dem Flex-, Gitter- und Mehrspalten-Layout. Du wendest die Eigenschaft auf das Containerelement an.
+Die zusammenfassende `gap`-CSS-Eigenschaft legt die Lücken fest, die auch als Zwischenraum zwischen den Zeilen und Spalten bekannt sind. Die `gap`-Eigenschaft und ihre `row-gap` und `column-gap`-Untereigenschaften bieten diese Funktionalität dem Flex-, Gitter- und Mehrspalten-Layout. Du wendest die Eigenschaft auf das Containerelement an.
Gib deinem `.gallery`-Flexcontainer eine `gap`-Eigenschaft mit `16px` als Wert.
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d20b12996101f430920fb.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d20b12996101f430920fb.md
index b936314f17f..722f7d7d33f 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d20b12996101f430920fb.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d20b12996101f430920fb.md
@@ -9,7 +9,7 @@ dashedName: step-82
Der Schnabel und die Füße des Pinguins haben die gleiche `color`.
-Create a new custom CSS variable named `--penguin-picorna`, and replace all relevant property values with it.
+Erstelle eine neue benutzerdefinierte CSS-Variable namens `--penguin-picorna` und ersetze alle relevanten Eigenschaftswerte durch diese.
# --hints--
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f852f645b5310a8264f555.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f852f645b5310a8264f555.md
index fb784289e7c..2422fc9ed5e 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f852f645b5310a8264f555.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f852f645b5310a8264f555.md
@@ -9,11 +9,11 @@ dashedName: step-24
Kommen wir nun zum nächsten Teil des Anmeldeformulars. This section will ask for the type of account the user is opening.
-Start by adding two `label` elements to the second `fieldset`.
+Beginne, indem du zwei `label`-Elemente zum zweiten `fieldset` hinzufügst.
# --hints--
-You should add two `label` elements to the second `fieldset`.
+Du solltest zwei `label`-Elemente zum zweiten `fieldset` hinzufügen.
```js
assert.equal(document.querySelectorAll('fieldset')?.[1]?.querySelectorAll('label')?.length, 2);
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f8604682407e0d017bbf7f.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f8604682407e0d017bbf7f.md
index 25dc56f10cd..f4f2cd30fc0 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f8604682407e0d017bbf7f.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f8604682407e0d017bbf7f.md
@@ -7,7 +7,7 @@ dashedName: step-26
# --description--
-Within each corresponding `label` element, and immediately after the `input` element, add a space and add the following text:
+Füge innerhalb jedes dazugehörigen `label`-Elements und unmittelbar nach dem `input`-Element ein Leerzeichen ein und füge den folgenden Text hinzu:
```md
Personal
@@ -16,25 +16,25 @@ Business
# --hints--
-You should give the first `label` the text `Personal`.
+Du solltest dem ersten `label`-Element den Text `Personal` zuweisen.
```js
assert.include(document.querySelector('fieldset:nth-child(2) > label')?.innerText, 'Personal');
```
-You should give the second `label` the text `Business`.
+Du solltest dem zweiten `label`-Element den Text `Business` zuweisen.
```js
assert.include(document.querySelector('fieldset:nth-child(2) > label:nth-child(2)')?.innerText, 'Business');
```
-You should give the first `label` text one space at the front.
+Du solltest beim Text des ersten `label`-Elements am Anfang ein Leerzeichen hinzufügen.
```js
assert.equal(document.querySelector('fieldset:nth-child(2) > label')?.innerText?.[0], ' ');
```
-You should give the second `label` text one space at the front.
+Du solltest beim Text des zweiten `label`-Elements am Anfang ein Leerzeichen hinzufügen.
```js
assert.equal(document.querySelector('fieldset:nth-child(2) > label:nth-child(2)')?.innerText?.[0], ' ');
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f8618d191b940d62038513.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f8618d191b940d62038513.md
index 79b133651c4..da1e986f8ee 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f8618d191b940d62038513.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f8618d191b940d62038513.md
@@ -7,19 +7,19 @@ dashedName: step-27
# --description--
-You only want one radio input to be selectable at a time. However, the form does not know the radio inputs are related.
+Es soll jeweils nur ein Radio-Input-Element gleichzeitig wählbar sein. Allerdings weiß das Formular nicht, dass die Radio-Input-Elemente miteinander verbunden sind.
-To relate the radio inputs, give them the same `name` attribute with a value of `account-type`. Now, it is not possible to select both radio inputs at the same time.
+Um die Radio-Input-Elemente miteinander zu verbinden, weise ihnen das gleiche `name`-Attribut mit dem Wert `account-type` zu. Es ist jetzt nicht mehr möglich, beide Radio-Input-Elemente gleichzeitig auszuwählen.
# --hints--
-You should give the first radio input the `name` attribute with a value of `account-type`.
+Du solltest dem ersten Radio-Input-Element das `name`-Attribut mit dem Wert `account-type` zuweisen.
```js
assert.equal(document.querySelector('fieldset:nth-child(2) label:nth-child(1) input[type="radio"]')?.name, 'account-type');
```
-You should give the second radio input the `name` attribute with a value of `account-type`.
+Du solltest dem zweiten Radio-Input-Element das `name`-Attribut mit dem Wert `account-type` zuweisen.
```js
assert.equal(document.querySelector('fieldset:nth-child(2) label:nth-child(2) input[type="radio"]')?.name, 'account-type');
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
index 930986215d7..5fb722816b2 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
@@ -7,25 +7,25 @@ dashedName: step-28
# --description--
-Currently when someone submit the form, they can submit it without checking the radio inputs. Although you had used `required` attribute to indicate the the input is required previously, this can't work in this case, because adding required to both inputs, will convey the wrong information to the form users.
+Wenn jemand das Formular abschickt, kann er es derzeit abschicken, ohne die Radio-Inputs zu überprüfen. Although you had used `required` attribute to indicate the the input is required previously, this can't work in this case, because adding required to both inputs, will convey the wrong information to the form users.
-To solve this, you can provide context of what is needed by adding `legend` element below the second `fieldset` with text `Account type (required)`, then add `checked` attribute to the `Personal` input to make sure that the form is submitted with the required data in it.
+To solve this, you can provide context of what is needed by adding a `legend` element with text `Account type (required)` before the `label` elements within the second `fieldset`. Then add the `checked` attribute to the `Personal` input to ensure the form is submitted with the required data in it.
# --hints--
-Your `input` elements should remain `type` of `radio`.
+Deine `input`-Elemente sollten `type` `radio` beibehalten.
```js
assert.equal(document.querySelectorAll('fieldset:nth-child(2) input[type="radio"]')?.length, 2);
```
-You should add a `legend` element within the second `fieldset` element.
+Du solltest ein `legend`-Element innerhalb des zweiten `fieldset`-Elements einfügen.
```js
assert.equal(document.querySelectorAll('fieldset:nth-of-type(2) > legend')?.length, 1);
```
-You should add `Account type (required)` text to the `legend` element.
+Du solltest den `Account type (required)`-Text zum `legend`-Element hinzufügen.
```js
assert.equal(document.querySelector('fieldset:nth-of-type(2) > legend')?.textContent, 'Account type (required)');
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab8367d35de04e5cb7929.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab8367d35de04e5cb7929.md
index 14bec7e087d..e359d7f0aa7 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab8367d35de04e5cb7929.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab8367d35de04e5cb7929.md
@@ -21,13 +21,13 @@ You should add `I accept the terms and conditions` text to the label following t
assert.equal(document.querySelector('fieldset:nth-child(3) + label')?.innerText.trim(), 'I accept the terms and conditions');
```
-You should use an `a` element to link to the terms and conditions.
+Du solltest ein `a`-Element verwenden, um auf die Nutzungsbedingungen zu verlinken.
```js
assert.exists(document.querySelector('fieldset:nth-child(3) + label > input + a'));
```
-You should give the `a` element an `href` of `https://www.freecodecamp.org/news/terms-of-service/`.
+Du solltest dem `a`-Element ein `href` mit dem Wert `https://www.freecodecamp.org/news/terms-of-service/` zuweisen.
```js
assert.match(document.querySelector('fieldset:nth-child(3) + label > input + a')?.href, /https:\/\/www\.freecodecamp\.org\/news\/terms-of-service\/?/);
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac4095512d3066053d73c.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac4095512d3066053d73c.md
index a1c108627d9..29309215a62 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac4095512d3066053d73c.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac4095512d3066053d73c.md
@@ -1,6 +1,6 @@
---
id: 60fac4095512d3066053d73c
-title: Step 34
+title: Schritt 34
challengeType: 0
dashedName: step-34
---
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac8d7fdfaee0796934f20.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac8d7fdfaee0796934f20.md
index 4815a34743e..b96d1b90a44 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac8d7fdfaee0796934f20.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac8d7fdfaee0796934f20.md
@@ -1,6 +1,6 @@
---
id: 60fac8d7fdfaee0796934f20
-title: Step 36
+title: Schritt 36
challengeType: 0
dashedName: step-36
---
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad0a812d9890938524f50.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad0a812d9890938524f50.md
index 05f3ca651d1..9cda5e6cefa 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad0a812d9890938524f50.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad0a812d9890938524f50.md
@@ -1,6 +1,6 @@
---
id: 60fad0a812d9890938524f50
-title: Step 41
+title: Schritt 41
challengeType: 0
dashedName: step-41
---
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad6dfcc0d930a59becf12.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad6dfcc0d930a59becf12.md
index 3be3f755fec..076d599284d 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad6dfcc0d930a59becf12.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad6dfcc0d930a59becf12.md
@@ -1,6 +1,6 @@
---
id: 60fad6dfcc0d930a59becf12
-title: Step 43
+title: Schritt 43
challengeType: 0
dashedName: step-43
---
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fadb18058e950c73925279.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fadb18058e950c73925279.md
index 8099279f00d..b2852179d59 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fadb18058e950c73925279.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fadb18058e950c73925279.md
@@ -1,6 +1,6 @@
---
id: 60fadb18058e950c73925279
-title: Step 46
+title: Schritt 46
challengeType: 0
dashedName: step-46
---
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60ffe7d8aae62c05bcc9e7eb.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60ffe7d8aae62c05bcc9e7eb.md
index 9825bcbde93..237b3cde427 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60ffe7d8aae62c05bcc9e7eb.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60ffe7d8aae62c05bcc9e7eb.md
@@ -1,6 +1,6 @@
---
id: 60ffe7d8aae62c05bcc9e7eb
-title: Step 58
+title: Schritt 58
challengeType: 0
dashedName: step-58
---
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60ffe8a5ceb0e90618db06d9.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60ffe8a5ceb0e90618db06d9.md
index c51a81adad9..9b6bd85f18f 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60ffe8a5ceb0e90618db06d9.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60ffe8a5ceb0e90618db06d9.md
@@ -1,6 +1,6 @@
---
id: 60ffe8a5ceb0e90618db06d9
-title: Step 59
+title: Schritt 59
challengeType: 0
dashedName: step-59
---
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60ffefd6479a3d084fb77cbc.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60ffefd6479a3d084fb77cbc.md
index cb7f01f0065..2af26712d29 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60ffefd6479a3d084fb77cbc.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60ffefd6479a3d084fb77cbc.md
@@ -1,6 +1,6 @@
---
id: 60ffefd6479a3d084fb77cbc
-title: Step 64
+title: Schritt 64
challengeType: 0
dashedName: step-64
---
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/65045fa2267ce52da6a73676.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/65045fa2267ce52da6a73676.md
index a158bca057e..a853259f627 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/65045fa2267ce52da6a73676.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/65045fa2267ce52da6a73676.md
@@ -7,31 +7,31 @@ dashedName: step-29
# --description--
-Follow accessibility best practices by linking the `input` elements and the `label` elements in the second `fieldset`.
+Folge den bewährten Methoden der Zugänglichkeit, indem du die `input`-Elemente und die `label`-Elemente im zweiten `fieldset` verknüpfst.
-Use `personal-account`, and `business-account` as values for the respective `id` attributes.
+Verwende `personal-account` und `business-account` als Werte für die jeweiligen `id`-Attribute.
# --hints--
-The first `input` element should have an `id` of `personal-account`.
+Das erste `input`-Element sollte die `id` `personal-account` enthalten.
```js
assert(document.querySelectorAll('fieldset:nth-of-type(2) input')?.[0]?.matches('#personal-account'))
```
-The second `input` element should have an `id` of `business-account`.
+Das zweite `input`-Element sollte die `id` `business-account` enthalten.
```js
assert(document.querySelectorAll('fieldset:nth-of-type(2) input')?.[1]?.matches('#business-account'))
```
-The first `label` element should have a `for` attribute with a value of `personal-account`.
+Das erste `label`-Element sollte ein `for`-Attribut mit einem Wert von `personal-account` enthalten.
```js
assert(document.querySelectorAll('fieldset:nth-of-type(2) label')?.[0]?.matches('label[for="personal-account"]'))
```
-The second `label` element should have a `for` attribute with a value of `business-account`.
+Das zweite `label`-Element sollte ein `for`-Attribut mit einem Wert von `business-account` enthalten.
```js
assert(document.querySelectorAll('fieldset:nth-of-type(2) label')?.[1]?.matches('label[for="business-account"]'))
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/6537e0be715fcb57d31ba8c3.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/6537e0be715fcb57d31ba8c3.md
index fd3a2bfd184..f1f67f92ce8 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/6537e0be715fcb57d31ba8c3.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/6537e0be715fcb57d31ba8c3.md
@@ -7,7 +7,7 @@ dashedName: step-65
# --description--
-Lastly change the text color of the `terms and conditions` link element to `#dfdfe2` by adding a new selector in the CSS.
+Ändere schließlich die Textfarbe des `terms and conditions`-Linkelements auf `#dfdfe2`, indem du einen neuen Selektor in CSS hinzufügst.
Well done! You have completed the final part of the _Registration Form_ practice project.
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
index f4b9850c61c..3e1b0df17b8 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
@@ -17,19 +17,12 @@ Du solltest ein `link`-Element haben.
assert.match(code, //)
```
-Dein `link`-Element sollte ein `href`-Attribut mit dem Wert `./styles.css` enthalten.
-
-```js
-assert.match(code, //)
-```
-
-
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
index 15a11090de2..09f8c3298c8 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
@@ -9,9 +9,9 @@ dashedName: step-9
CSS positioning lets you set how you want an element to be positioned in the browser. Es verfügt über eine `position`-Eigenschaft, die du auf `static`, `absolute`, `relative`, `sticky` oder `fixed` setzen kannst.
-Once you set the `position` property of the element, you can move the element around by setting a pixel or a percentage value for one or more of the `top`, `right`, `left`, or `bottom` properties.
+Sobald du die `position`-Eigenschaft des Elements festgelegt hast, kannst du das Element verschieben, indem du einen Pixel- oder Prozentwert für eine oder mehrere der `top`-, `right`-, `left`- oder `bottom`-Eigenschaften festlegst.
-`static` ist die Standardpositionierung für alle Elemente. If you assign it to an element, you won't be able to move it around with `top`, `right`, `left`, or `bottom`.
+`static` ist die Standardpositionierung für alle Elemente. Wenn du sie einem Element zuweist, kannst du es nicht mehr mit `top`, `right`, `left` oder `bottom` verschieben.
Weise `.cat-head` eine `position`-Eigenschaft mit dem Wert `static` zu und setze dann die `top`- und `left`-Eigenschaften jeweils auf `100px`.
@@ -65,14 +65,16 @@ body {
background-color: #c9d2fc;
}
+--fcc-editable-region--
.cat-head {
- --fcc-editable-region--
- --fcc-editable-region--
+
+
background: linear-gradient(#5e5e5e 85%, #45454f 100%);
width: 205px;
height: 180px;
border: 1px solid #000;
border-radius: 46%;
}
+--fcc-editable-region--
```
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646cfd853634255d02b64cc1.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646cfd853634255d02b64cc1.md
index 9fded09fc6a..78e8b529a98 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646cfd853634255d02b64cc1.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646cfd853634255d02b64cc1.md
@@ -7,7 +7,7 @@ dashedName: step-32
# --description--
-That's not the behavior you want. Die Ohren sollten über dem Kopf angezeigt werden, damit die Ränder, die sich mit ihnen überschneiden, nicht sichtbar sind.
+Das ist nicht das von dir gewünschte Verhalten. Die Ohren sollten über dem Kopf angezeigt werden, damit die Ränder, die sich mit ihnen überschneiden, nicht sichtbar sind.
Setze die `z-index`-Eigenschaft des linken Ohrs anstelle von `-1` auf `1`.
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/6476f5c17f99146071ee884c.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/6476f5c17f99146071ee884c.md
index fce71164d30..1e08349503c 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/6476f5c17f99146071ee884c.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/6476f5c17f99146071ee884c.md
@@ -7,7 +7,7 @@ dashedName: step-10
# --description--
-You could see that nothing happens. Das `.cat-head`-Element hat sich nicht bewegt, obwohl ein `top` und `left` jeweils auf `100px` gesetzt sind. But that's not the case with `relative` positioning.
+Du konntest sehen, dass nichts passiert. Das `.cat-head`-Element hat sich nicht bewegt, obwohl ein `top` und `left` jeweils auf `100px` gesetzt sind. Aber dies ist bei der `relative`-Positionierung nicht der Fall.
Wenn du den `relative`-Wert verwendest, wird das Element weiterhin entsprechend dem normalen Fluss des Dokuments positioniert, aber die `top`-, `left`-, `bottom`- und `right`-Werte werden aktiv.
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996f.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996f.md
index 66e25493da1..0898f0118f5 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996f.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996f.md
@@ -9,7 +9,7 @@ dashedName: step-6
Füge ein `div`-Element im `body` hinzu.
-Set the `class` attribute equal to `canvas`.
+Setze das `class`-Attribut gleich `canvas`.
Dies dient als Canvas für dein Bild.
diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f34ecc1091b4fd5a8a484.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f34ecc1091b4fd5a8a484.md
index c40627e3a18..44a006faa8c 100644
--- a/curriculum/challenges/german/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f34ecc1091b4fd5a8a484.md
+++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f34ecc1091b4fd5a8a484.md
@@ -11,7 +11,7 @@ Füge innerhalb des `head`-Elements ein `link`-Element hinzu, bei dem das `rel`-
Auf diese Weise wird die `Open Sans`-Schriftart-Familie mit den Schriftstärke-Einstellungen `400`, `700` und `800` importiert.
-Also add a `link` element to link your `styles.css` file.
+Füge außerdem ein `link`-Element hinzu, um deine `styles.css`-Datei zu verknüpfen.
# --hints--
diff --git a/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md b/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
index b2dda0bcbc7..ece4709a297 100644
--- a/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
+++ b/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
@@ -1,6 +1,6 @@
---
id: 5daa813381b9e3db6c126b43
-title: Step 1
+title: Schritt 1
challengeType: 20
dashedName: step-1
---
@@ -9,11 +9,17 @@ dashedName: step-1
PYTHON
-Set the `hello` variable to "world". Then print the value.
+Setze die `hello`-Variable auf "world". Gib dann den Wert aus.
# --hints--
-The `hello` variable should equal "world".
+The source code should include `one = 2`
+
+```js
+assert(code.match(/one\s*=\s*2/))
+```
+
+Die `hello`-Variable sollte "world" entsprechen.
```js
({ test: () => assert.equal(__userGlobals.get("hello"), "world") })
@@ -27,12 +33,6 @@ The `hello` variable should equal "world".
--fcc-editable-region--
one = 1
hello = "goodbye"
-def a_function():
- local_thing = "world"
- print(local_thing)
-
-a_function()
-
print(hello)
--fcc-editable-region--
```
@@ -40,7 +40,7 @@ print(hello)
# --solutions--
```py
-one = 1
+one = 2
hello = "world"
print(hello)
```
diff --git a/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/64a5229b99ff0e8250cd9a72.md b/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/64a5229b99ff0e8250cd9a72.md
index fa8c264ec48..7410aa40133 100644
--- a/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/64a5229b99ff0e8250cd9a72.md
+++ b/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/64a5229b99ff0e8250cd9a72.md
@@ -1,13 +1,13 @@
---
id: 64a5229b99ff0e8250cd9a72
-title: Step 2
+title: Schritt 2
challengeType: 20
dashedName: step-2
---
# --description--
-step 2 instructions
+Anweisungen für Schritt 2
# --hints--
diff --git a/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md b/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md
index c5a956a064f..2610598cc5f 100644
--- a/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md
+++ b/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md
@@ -1,17 +1,17 @@
---
id: 64b163c20e59cbd4a64940b0
-title: Step 3
+title: Schritt 3
challengeType: 20
dashedName: step-3
---
# --description--
-Create a function to add two numbers together.
+Erstelle eine Funktion, um zwei Zahlen zu addieren.
# --hints--
-Adding 3 and 5 should return 8.
+Die Addition von 3 und 5 sollte 8 ergeben.
```js
({ test: () => assert.equal(__userGlobals.get("add")(3,5), 8) })
diff --git a/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b171849f925b0773aa434c.md b/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b171849f925b0773aa434c.md
index c2982ad42b4..ef4f6fde50a 100644
--- a/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b171849f925b0773aa434c.md
+++ b/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b171849f925b0773aa434c.md
@@ -1,17 +1,17 @@
---
id: 64b171849f925b0773aa434c
-title: Step 4
+title: Schritt 4
challengeType: 20
dashedName: step-4
---
# --description--
-Create an list of numbers from 1 to 3 and assign it to the variable `xs`.
+Erstelle eine Liste mit Zahlen von 1 bis 3 und weise sie der Variable `xs` zu.
# --hints--
-`xs` should be the list `[1,2,3]`.
+`xs` sollte die Liste `[1,2,3]` darstellen.
```js
({ test: () => assert.deepEqual(Array.from(__userGlobals.get("xs")), [1,2,3])})
diff --git a/curriculum/challenges/german/20-upcoming-python/upcoming-python-project/64afc37bf3b37856e035b85e.md b/curriculum/challenges/german/20-upcoming-python/upcoming-python-project/64afc37bf3b37856e035b85e.md
index 04c38b6965c..9436a721ff9 100644
--- a/curriculum/challenges/german/20-upcoming-python/upcoming-python-project/64afc37bf3b37856e035b85e.md
+++ b/curriculum/challenges/german/20-upcoming-python/upcoming-python-project/64afc37bf3b37856e035b85e.md
@@ -1,13 +1,13 @@
---
id: 64afc37bf3b37856e035b85e
-title: Upcoming Python Project
+title: Bevorstehendes Python-Projekt
challengeType: 20
dashedName: upcoming-python-project
---
# --description--
-Python Project instructions
+Anweisungen für Python-Projekt
# --hints--
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
new file mode 100644
index 00000000000..a8abd3ff027
--- /dev/null
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
@@ -0,0 +1,93 @@
+---
+id: 651dd5ae6ffb500e3f2ce47c
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+```js
+console.log('with code');
+```
+
+***
+
+Making a statement based on her assumption.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Expressing a possibility.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
new file mode 100644
index 00000000000..27f5dcb5e42
--- /dev/null
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5d86ffb500e3f2ce47d
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
new file mode 100644
index 00000000000..a79f83d6f5a
--- /dev/null
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd5f41d697d0aab7833b5
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
new file mode 100644
index 00000000000..13028d7c28a
--- /dev/null
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
@@ -0,0 +1,15 @@
+---
+id: 651dd3e06ffb500e3f2ce478
+title: "Dialogue: Introducing"
+challengeType: 21
+videoId: nLDychdBwUg
+dashedName: dialogue-introducing
+---
+
+# --description--
+
+What the video above to understand the context of the upcoming lessons.
+
+# --assignment--
+
+Watch the video
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
new file mode 100644
index 00000000000..3d67f522c07
--- /dev/null
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
@@ -0,0 +1,49 @@
+---
+id: 6543abeff5f028dba112f278
+title: "I am: I'm"
+challengeType: 19
+dashedName: i-am-im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, the verb `to be` is used to talk about identities, characteristics, and more. The contraction `I'm` is a combination of `I` and `am`. Here, Tom uses it to introduce himself.
+
+# --question--
+
+## --text--
+
+Which operation correctly expands the contraction `I'm`?
+
+## --answers--
+
+`I is`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I am`
+
+***
+
+`I was`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I have`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+## --video-solution--
+
+2
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
new file mode 100644
index 00000000000..a2aa6a8f717
--- /dev/null
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
@@ -0,0 +1,21 @@
+---
+id: 6543abf5f5f028dba112f279
+title: I'm
+challengeType: 22
+dashedName: im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+The word `I'm` is a contraction of `I am`. Contractions are a way to shorten common combinations of words, especially with verbs.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, that's right! _ Tom McKenzie.`
+
+## --blanks--
+
+`I'm`
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
new file mode 100644
index 00000000000..3b8b7cff0bd
--- /dev/null
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
@@ -0,0 +1,53 @@
+---
+id: 6537e6ece93e5724eeb27c54
+title: Name and Job Title
+challengeType: 19
+dashedName: name-and-job-title
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, we often mention our job or role in a company by saying, `I'm [Name], the [Job title].` This lets others know our position or role.
+
+# --question--
+
+## --text--
+
+What is Maria's job role at the company?
+
+## --answers--
+
+`Graphic Designer`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Member`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Lead`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`CEO`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
new file mode 100644
index 00000000000..2a3c405b6ad
--- /dev/null
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
@@ -0,0 +1,33 @@
+---
+id: 651dd5386ffb500e3f2ce47a
+title: Right
+challengeType: 22
+dashedName: right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, to check or confirm something people sometimes use tag questions. For example, `You are a programmer, right?` Here, `right?` is used as a tag to check or confirm the previous statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, _?`
+
+## --blanks--
+
+`are`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
+
+***
+
+`right`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
new file mode 100644
index 00000000000..2ae09721cbf
--- /dev/null
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
@@ -0,0 +1,33 @@
+---
+id: 6543aa3df5f028dba112f275
+title: Team Lead
+challengeType: 22
+dashedName: team-lead
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+A `team lead` is a person who leads or manages a team. In the dialogue, Maria introduces herself as the team lead, meaning she has a leadership role.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`I'm Maria, the _ _.`
+
+## --blanks--
+
+team
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+lead
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
new file mode 100644
index 00000000000..3349bcfead9
--- /dev/null
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
@@ -0,0 +1,25 @@
+---
+id: 6543aae6f5f028dba112f277
+title: "That's Right: 2"
+challengeType: 22
+dashedName: thats-right-2
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+Placeholder Description \_\_\_ \_\_
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, _ _! I'm Tom McKenzie. It's a pleasure to meet you.`
+
+## --blanks--
+
+`that's`
+
+***
+
+`right`
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
new file mode 100644
index 00000000000..e85982fd561
--- /dev/null
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
@@ -0,0 +1,49 @@
+---
+id: 6543aaa9f5f028dba112f276
+title: That's Right
+challengeType: 19
+dashedName: thats-right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+When someone makes a correct assumption or guess about you, you can confirm it using phrases like `that's right`. It's a way of agreeing or saying yes to what is said.
+
+# --question--
+
+## --text--
+
+Which phrase does Tom use to confirm Maria's statement about him?
+
+## --answers--
+
+`that's wrong`
+
+### --feedback--
+
+`That's wrong` is used to disagree.
+
+***
+
+`that's okay`
+
+### --feedback--
+
+`that's okay` usually shows acceptance, not confirmation.
+
+***
+
+`that's right`
+
+***
+
+`that's left`
+
+### --feedback--
+
+`that's left` refers to a direction, not confirmation.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
new file mode 100644
index 00000000000..dd254987129
--- /dev/null
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
@@ -0,0 +1,27 @@
+---
+id: 651dd5296ffb500e3f2ce479
+title: You Are
+challengeType: 22
+dashedName: you-are
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, when making introductions or identifying someone, you use the verb `to be`. In this case, `You are` is used to address the person Maria is talking to and affirmatively identify their occupation.
+
+Maria is introducing herself and confirming Tom's job role. `Are` is used in the present affirmative to make a statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, right?`
+
+## --blanks--
+
+are
+
+### --feedback--
+
+The verb `to be` is an irregular verb. When conjugated with the pronoun `you`, `be` becomes `are`. For example: `You are an English learner.`
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
new file mode 100644
index 00000000000..7aa1e30008d
--- /dev/null
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5a46ffb500e3f2ce47b
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+***
+
+Giving a job description.
+
+***
+
+Making a statement based on her assumption.
+
+***
+
+Expressing a possibility.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
new file mode 100644
index 00000000000..2ee50fe5647
--- /dev/null
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5e46ffb500e3f2ce47e
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
new file mode 100644
index 00000000000..adc4b41f091
--- /dev/null
+++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd6071d697d0aab7833b6
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/italian/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml b/curriculum/challenges/italian/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml
new file mode 100644
index 00000000000..3ea323ff9d9
--- /dev/null
+++ b/curriculum/challenges/italian/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml
@@ -0,0 +1,10 @@
+---
+id: 651dd7e01d697d0aab7833b7
+title: A2 English for Developers Certification
+certification: a2-english-for-developers
+challengeType: 7
+isPrivate: true
+tests:
+ -
+ id: 651dd3e06ffb500e3f2ce478
+ title: Challenge 1
diff --git a/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md b/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
index 12f03b12147..99c70473a18 100644
--- a/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
+++ b/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
@@ -81,13 +81,13 @@ L'oggetto `foods` dovrebbe avere una chiave `strawberries` con un valore di `27`
assert(foods.strawberries === 27);
```
-Le coppie chiave-valore devono essere impostate usando la notazione punto o parentesi.
+The definition of the `foods` object should not be changed.
```js
assert(
- code.search(/bananas:/) === -1 &&
- code.search(/grapes:/) === -1 &&
- code.search(/strawberries:/) === -1
+ code.search(/let foods/) === -1 &&
+ code.search(/const\s+foods\s*=\s*{\s*apples:\s*25,\s*oranges:\s*32,\s*plums:\s*28\s*};/
+) !== -1
);
```
@@ -96,7 +96,7 @@ assert(
## --seed-contents--
```js
-let foods = {
+const foods = {
apples: 25,
oranges: 32,
plums: 28
@@ -112,7 +112,7 @@ console.log(foods);
# --solutions--
```js
-let foods = {
+const foods = {
apples: 25,
oranges: 32,
plums: 28
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
index a48bb5e8df6..79280e5d5ef 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
@@ -11,24 +11,43 @@ Come per gli altri elementi `input` e `label`, collega l'elemento `textarea` al
# --hints--
-Dovresti dare all'elemento `label` un attributo `for`.
+You should give the `textarea` element an `id` attribute.
```js
-assert.notEmpty(document.querySelectorAll('.formrow > .question-block')?.[1]?.querySelector('label')?.htmlFor);
+assert.notEmpty(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id);
```
-Dovresti dare all'elemento `textarea` un `id` corrispondente all'attributo `for` dell'elemento `label`.
+You cannot include spaces in the `id` for the `textarea` element.
+
+```js
+assert.match(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id, /^\S+$/);
+```
+
+You must choose a different `id` for the `textarea` element because another element is using that `id`.
+
+```js
+const textareaId = document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id;
+assert.equal(document.querySelectorAll(`[id='${textareaId.replaceAll(/(['\\])/g, "\\$1")}']`).length, 1);
+```
+
+You should give the `label` element a `for` attribute matching the `id` of the `textarea` element.
```js
assert.equal(document.querySelectorAll('.formrow > .question-block')?.[1]?.querySelector('label')?.htmlFor, document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id);
```
-Dovresti dare all'elemento `textarea` un attributo `name`.
+You should give the `textarea` element a `name` attribute.
```js
assert.notEmpty(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.name);
```
+You should use at least one non-space character in the `name` attribute for the `textarea`.
+
+```js
+assert.match(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.name, /\S/);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
index 20489018c96..61b13ac3a98 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
@@ -148,10 +148,10 @@ assert.equal(document.querySelector('button[type="submit"]')?.textContent ?? doc
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
index a3d3044e0d1..b7a81cb1620 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
@@ -48,6 +48,20 @@ const itemPMarginBottom = new __helpers.CSSHelp(document).getStyle('.item p')?.g
assert(itemPMarginBottom === '5px');
```
+Your `p` elements nested in your `.item` elements should not have a `margin-left` set.
+
+```js
+const itemPMarginLeft = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-left');
+assert(!itemPMarginLeft);
+```
+
+Your `p` elements nested in your `.item` elements should not have a `margin-right` set.
+
+```js
+const itemPMarginRight = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-right');
+assert(!itemPMarginRight);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
index 90134f6c33d..8faca347ee5 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
@@ -9,7 +9,7 @@ dashedName: step-28
Attualmente quando qualcuno invia il modulo, può farlo senza selezionare gli input di opzione. Sebbene in precedenza tu abbia usato l'attributo `required` per indicare che l'input è obbligatorio, in questo caso non può funzionare, perché aggiungere required a entrambi gli input, darà informazioni errate agli utenti del modulo.
-Per risolvere questo problema puoi fornire il contesto necessario aggiungendo un elemento `legend` sotto il secondo `fieldset` con il testo `Account type (required)`, poi aggiungi un attributo `checked` all'input `Personal` per assicurarti che il modulo venga inviato con i dati richiesti.
+To solve this, you can provide context of what is needed by adding a `legend` element with text `Account type (required)` before the `label` elements within the second `fieldset`. Then add the `checked` attribute to the `Personal` input to ensure the form is submitted with the required data in it.
# --hints--
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
index 6fe982123d6..2e4a60f61a6 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
@@ -17,19 +17,12 @@ Dovresti avere un elemento `link`.
assert.match(code, //)
```
-L'elemento `link` dovrebbe avere un attributo `href` con il valore `./styles.css`.
-
-```js
-assert.match(code, //)
-```
-
-
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
index ece445b82e3..c6c9eaa8391 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
@@ -65,14 +65,16 @@ body {
background-color: #c9d2fc;
}
+--fcc-editable-region--
.cat-head {
- --fcc-editable-region--
- --fcc-editable-region--
+
+
background: linear-gradient(#5e5e5e 85%, #45454f 100%);
width: 205px;
height: 180px;
border: 1px solid #000;
border-radius: 46%;
}
+--fcc-editable-region--
```
diff --git a/curriculum/challenges/italian/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md b/curriculum/challenges/italian/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
index b2dda0bcbc7..dc1e0d1e25d 100644
--- a/curriculum/challenges/italian/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
+++ b/curriculum/challenges/italian/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
@@ -13,6 +13,12 @@ Set the `hello` variable to "world". Then print the value.
# --hints--
+The source code should include `one = 2`
+
+```js
+assert(code.match(/one\s*=\s*2/))
+```
+
The `hello` variable should equal "world".
```js
@@ -27,12 +33,6 @@ The `hello` variable should equal "world".
--fcc-editable-region--
one = 1
hello = "goodbye"
-def a_function():
- local_thing = "world"
- print(local_thing)
-
-a_function()
-
print(hello)
--fcc-editable-region--
```
@@ -40,7 +40,7 @@ print(hello)
# --solutions--
```py
-one = 1
+one = 2
hello = "world"
print(hello)
```
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
new file mode 100644
index 00000000000..a8abd3ff027
--- /dev/null
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
@@ -0,0 +1,93 @@
+---
+id: 651dd5ae6ffb500e3f2ce47c
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+```js
+console.log('with code');
+```
+
+***
+
+Making a statement based on her assumption.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Expressing a possibility.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
new file mode 100644
index 00000000000..27f5dcb5e42
--- /dev/null
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5d86ffb500e3f2ce47d
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
new file mode 100644
index 00000000000..a79f83d6f5a
--- /dev/null
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd5f41d697d0aab7833b5
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
new file mode 100644
index 00000000000..13028d7c28a
--- /dev/null
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
@@ -0,0 +1,15 @@
+---
+id: 651dd3e06ffb500e3f2ce478
+title: "Dialogue: Introducing"
+challengeType: 21
+videoId: nLDychdBwUg
+dashedName: dialogue-introducing
+---
+
+# --description--
+
+What the video above to understand the context of the upcoming lessons.
+
+# --assignment--
+
+Watch the video
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
new file mode 100644
index 00000000000..3d67f522c07
--- /dev/null
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
@@ -0,0 +1,49 @@
+---
+id: 6543abeff5f028dba112f278
+title: "I am: I'm"
+challengeType: 19
+dashedName: i-am-im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, the verb `to be` is used to talk about identities, characteristics, and more. The contraction `I'm` is a combination of `I` and `am`. Here, Tom uses it to introduce himself.
+
+# --question--
+
+## --text--
+
+Which operation correctly expands the contraction `I'm`?
+
+## --answers--
+
+`I is`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I am`
+
+***
+
+`I was`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I have`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+## --video-solution--
+
+2
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
new file mode 100644
index 00000000000..a2aa6a8f717
--- /dev/null
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
@@ -0,0 +1,21 @@
+---
+id: 6543abf5f5f028dba112f279
+title: I'm
+challengeType: 22
+dashedName: im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+The word `I'm` is a contraction of `I am`. Contractions are a way to shorten common combinations of words, especially with verbs.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, that's right! _ Tom McKenzie.`
+
+## --blanks--
+
+`I'm`
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
new file mode 100644
index 00000000000..3b8b7cff0bd
--- /dev/null
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
@@ -0,0 +1,53 @@
+---
+id: 6537e6ece93e5724eeb27c54
+title: Name and Job Title
+challengeType: 19
+dashedName: name-and-job-title
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, we often mention our job or role in a company by saying, `I'm [Name], the [Job title].` This lets others know our position or role.
+
+# --question--
+
+## --text--
+
+What is Maria's job role at the company?
+
+## --answers--
+
+`Graphic Designer`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Member`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Lead`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`CEO`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
new file mode 100644
index 00000000000..2a3c405b6ad
--- /dev/null
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
@@ -0,0 +1,33 @@
+---
+id: 651dd5386ffb500e3f2ce47a
+title: Right
+challengeType: 22
+dashedName: right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, to check or confirm something people sometimes use tag questions. For example, `You are a programmer, right?` Here, `right?` is used as a tag to check or confirm the previous statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, _?`
+
+## --blanks--
+
+`are`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
+
+***
+
+`right`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
new file mode 100644
index 00000000000..2ae09721cbf
--- /dev/null
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
@@ -0,0 +1,33 @@
+---
+id: 6543aa3df5f028dba112f275
+title: Team Lead
+challengeType: 22
+dashedName: team-lead
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+A `team lead` is a person who leads or manages a team. In the dialogue, Maria introduces herself as the team lead, meaning she has a leadership role.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`I'm Maria, the _ _.`
+
+## --blanks--
+
+team
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+lead
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
new file mode 100644
index 00000000000..3349bcfead9
--- /dev/null
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
@@ -0,0 +1,25 @@
+---
+id: 6543aae6f5f028dba112f277
+title: "That's Right: 2"
+challengeType: 22
+dashedName: thats-right-2
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+Placeholder Description \_\_\_ \_\_
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, _ _! I'm Tom McKenzie. It's a pleasure to meet you.`
+
+## --blanks--
+
+`that's`
+
+***
+
+`right`
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
new file mode 100644
index 00000000000..e85982fd561
--- /dev/null
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
@@ -0,0 +1,49 @@
+---
+id: 6543aaa9f5f028dba112f276
+title: That's Right
+challengeType: 19
+dashedName: thats-right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+When someone makes a correct assumption or guess about you, you can confirm it using phrases like `that's right`. It's a way of agreeing or saying yes to what is said.
+
+# --question--
+
+## --text--
+
+Which phrase does Tom use to confirm Maria's statement about him?
+
+## --answers--
+
+`that's wrong`
+
+### --feedback--
+
+`That's wrong` is used to disagree.
+
+***
+
+`that's okay`
+
+### --feedback--
+
+`that's okay` usually shows acceptance, not confirmation.
+
+***
+
+`that's right`
+
+***
+
+`that's left`
+
+### --feedback--
+
+`that's left` refers to a direction, not confirmation.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
new file mode 100644
index 00000000000..dd254987129
--- /dev/null
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
@@ -0,0 +1,27 @@
+---
+id: 651dd5296ffb500e3f2ce479
+title: You Are
+challengeType: 22
+dashedName: you-are
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, when making introductions or identifying someone, you use the verb `to be`. In this case, `You are` is used to address the person Maria is talking to and affirmatively identify their occupation.
+
+Maria is introducing herself and confirming Tom's job role. `Are` is used in the present affirmative to make a statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, right?`
+
+## --blanks--
+
+are
+
+### --feedback--
+
+The verb `to be` is an irregular verb. When conjugated with the pronoun `you`, `be` becomes `are`. For example: `You are an English learner.`
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
new file mode 100644
index 00000000000..7aa1e30008d
--- /dev/null
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5a46ffb500e3f2ce47b
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+***
+
+Giving a job description.
+
+***
+
+Making a statement based on her assumption.
+
+***
+
+Expressing a possibility.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
new file mode 100644
index 00000000000..2ee50fe5647
--- /dev/null
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5e46ffb500e3f2ce47e
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
new file mode 100644
index 00000000000..adc4b41f091
--- /dev/null
+++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd6071d697d0aab7833b6
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/japanese/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml b/curriculum/challenges/japanese/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml
new file mode 100644
index 00000000000..3ea323ff9d9
--- /dev/null
+++ b/curriculum/challenges/japanese/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml
@@ -0,0 +1,10 @@
+---
+id: 651dd7e01d697d0aab7833b7
+title: A2 English for Developers Certification
+certification: a2-english-for-developers
+challengeType: 7
+isPrivate: true
+tests:
+ -
+ id: 651dd3e06ffb500e3f2ce478
+ title: Challenge 1
diff --git a/curriculum/challenges/japanese/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md b/curriculum/challenges/japanese/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
index 95915894ac3..9cbd53a3de0 100644
--- a/curriculum/challenges/japanese/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
+++ b/curriculum/challenges/japanese/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
@@ -81,13 +81,13 @@ assert(foods.grapes === 35);
assert(foods.strawberries === 27);
```
-キーと値のペアはドット記法またはブラケット記法を使用して、設定する必要があります。
+The definition of the `foods` object should not be changed.
```js
assert(
- code.search(/bananas:/) === -1 &&
- code.search(/grapes:/) === -1 &&
- code.search(/strawberries:/) === -1
+ code.search(/let foods/) === -1 &&
+ code.search(/const\s+foods\s*=\s*{\s*apples:\s*25,\s*oranges:\s*32,\s*plums:\s*28\s*};/
+) !== -1
);
```
@@ -96,7 +96,7 @@ assert(
## --seed-contents--
```js
-let foods = {
+const foods = {
apples: 25,
oranges: 32,
plums: 28
@@ -112,7 +112,7 @@ console.log(foods);
# --solutions--
```js
-let foods = {
+const foods = {
apples: 25,
oranges: 32,
plums: 28
diff --git a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
index a4ed7ad2272..939634a66a0 100644
--- a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
+++ b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
@@ -11,24 +11,43 @@ dashedName: step-40
# --hints--
-`label` 要素には `for` 属性が必要です。
+You should give the `textarea` element an `id` attribute.
```js
-assert.notEmpty(document.querySelectorAll('.formrow > .question-block')?.[1]?.querySelector('label')?.htmlFor);
+assert.notEmpty(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id);
```
-`textarea` 要素に、`label` 要素の `for` 属性と値が一致する `id` 属性を加える必要があります。
+You cannot include spaces in the `id` for the `textarea` element.
+
+```js
+assert.match(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id, /^\S+$/);
+```
+
+You must choose a different `id` for the `textarea` element because another element is using that `id`.
+
+```js
+const textareaId = document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id;
+assert.equal(document.querySelectorAll(`[id='${textareaId.replaceAll(/(['\\])/g, "\\$1")}']`).length, 1);
+```
+
+You should give the `label` element a `for` attribute matching the `id` of the `textarea` element.
```js
assert.equal(document.querySelectorAll('.formrow > .question-block')?.[1]?.querySelector('label')?.htmlFor, document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id);
```
-`textarea` 要素には `name` 属性が必要です。
+You should give the `textarea` element a `name` attribute.
```js
assert.notEmpty(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.name);
```
+You should use at least one non-space character in the `name` attribute for the `textarea`.
+
+```js
+assert.match(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.name, /\S/);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
index 3a3fd2e2f07..709cf8bf3d6 100644
--- a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
+++ b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
@@ -148,10 +148,10 @@ assert.equal(document.querySelector('button[type="submit"]')?.textContent ?? doc
diff --git a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
index a80a8fb01af..7ad0d252f21 100644
--- a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
+++ b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
@@ -48,6 +48,20 @@ const itemPMarginBottom = new __helpers.CSSHelp(document).getStyle('.item p')?.g
assert(itemPMarginBottom === '5px');
```
+Your `p` elements nested in your `.item` elements should not have a `margin-left` set.
+
+```js
+const itemPMarginLeft = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-left');
+assert(!itemPMarginLeft);
+```
+
+Your `p` elements nested in your `.item` elements should not have a `margin-right` set.
+
+```js
+const itemPMarginRight = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-right');
+assert(!itemPMarginRight);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
index cffb9e81d95..79738afae71 100644
--- a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
+++ b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
@@ -9,7 +9,7 @@ dashedName: step-28
Currently when someone submit the form, they can submit it without checking the radio inputs. Although you had used `required` attribute to indicate the the input is required previously, this can't work in this case, because adding required to both inputs, will convey the wrong information to the form users.
-To solve this, you can provide context of what is needed by adding `legend` element below the second `fieldset` with text `Account type (required)`, then add `checked` attribute to the `Personal` input to make sure that the form is submitted with the required data in it.
+To solve this, you can provide context of what is needed by adding a `legend` element with text `Account type (required)` before the `label` elements within the second `fieldset`. Then add the `checked` attribute to the `Personal` input to ensure the form is submitted with the required data in it.
# --hints--
diff --git a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
index 16fcfd166a3..a0733f1687a 100644
--- a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
+++ b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
@@ -17,19 +17,12 @@ Your should have a `link` element.
assert.match(code, //)
```
-Your `link` element should have an `href` attribute with the value `./styles.css`.
-
-```js
-assert.match(code, //)
-```
-
-
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
index 7c88ce9baa8..0e57e0aebc2 100644
--- a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
+++ b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
@@ -65,14 +65,16 @@ body {
background-color: #c9d2fc;
}
+--fcc-editable-region--
.cat-head {
- --fcc-editable-region--
- --fcc-editable-region--
+
+
background: linear-gradient(#5e5e5e 85%, #45454f 100%);
width: 205px;
height: 180px;
border: 1px solid #000;
border-radius: 46%;
}
+--fcc-editable-region--
```
diff --git a/curriculum/challenges/japanese/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md b/curriculum/challenges/japanese/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
index b2dda0bcbc7..dc1e0d1e25d 100644
--- a/curriculum/challenges/japanese/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
+++ b/curriculum/challenges/japanese/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
@@ -13,6 +13,12 @@ Set the `hello` variable to "world". Then print the value.
# --hints--
+The source code should include `one = 2`
+
+```js
+assert(code.match(/one\s*=\s*2/))
+```
+
The `hello` variable should equal "world".
```js
@@ -27,12 +33,6 @@ The `hello` variable should equal "world".
--fcc-editable-region--
one = 1
hello = "goodbye"
-def a_function():
- local_thing = "world"
- print(local_thing)
-
-a_function()
-
print(hello)
--fcc-editable-region--
```
@@ -40,7 +40,7 @@ print(hello)
# --solutions--
```py
-one = 1
+one = 2
hello = "world"
print(hello)
```
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
new file mode 100644
index 00000000000..a8abd3ff027
--- /dev/null
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
@@ -0,0 +1,93 @@
+---
+id: 651dd5ae6ffb500e3f2ce47c
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+```js
+console.log('with code');
+```
+
+***
+
+Making a statement based on her assumption.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Expressing a possibility.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
new file mode 100644
index 00000000000..27f5dcb5e42
--- /dev/null
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5d86ffb500e3f2ce47d
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
new file mode 100644
index 00000000000..a79f83d6f5a
--- /dev/null
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd5f41d697d0aab7833b5
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
new file mode 100644
index 00000000000..13028d7c28a
--- /dev/null
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
@@ -0,0 +1,15 @@
+---
+id: 651dd3e06ffb500e3f2ce478
+title: "Dialogue: Introducing"
+challengeType: 21
+videoId: nLDychdBwUg
+dashedName: dialogue-introducing
+---
+
+# --description--
+
+What the video above to understand the context of the upcoming lessons.
+
+# --assignment--
+
+Watch the video
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
new file mode 100644
index 00000000000..3d67f522c07
--- /dev/null
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
@@ -0,0 +1,49 @@
+---
+id: 6543abeff5f028dba112f278
+title: "I am: I'm"
+challengeType: 19
+dashedName: i-am-im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, the verb `to be` is used to talk about identities, characteristics, and more. The contraction `I'm` is a combination of `I` and `am`. Here, Tom uses it to introduce himself.
+
+# --question--
+
+## --text--
+
+Which operation correctly expands the contraction `I'm`?
+
+## --answers--
+
+`I is`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I am`
+
+***
+
+`I was`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I have`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+## --video-solution--
+
+2
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
new file mode 100644
index 00000000000..a2aa6a8f717
--- /dev/null
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
@@ -0,0 +1,21 @@
+---
+id: 6543abf5f5f028dba112f279
+title: I'm
+challengeType: 22
+dashedName: im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+The word `I'm` is a contraction of `I am`. Contractions are a way to shorten common combinations of words, especially with verbs.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, that's right! _ Tom McKenzie.`
+
+## --blanks--
+
+`I'm`
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
new file mode 100644
index 00000000000..3b8b7cff0bd
--- /dev/null
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
@@ -0,0 +1,53 @@
+---
+id: 6537e6ece93e5724eeb27c54
+title: Name and Job Title
+challengeType: 19
+dashedName: name-and-job-title
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, we often mention our job or role in a company by saying, `I'm [Name], the [Job title].` This lets others know our position or role.
+
+# --question--
+
+## --text--
+
+What is Maria's job role at the company?
+
+## --answers--
+
+`Graphic Designer`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Member`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Lead`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`CEO`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
new file mode 100644
index 00000000000..2a3c405b6ad
--- /dev/null
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
@@ -0,0 +1,33 @@
+---
+id: 651dd5386ffb500e3f2ce47a
+title: Right
+challengeType: 22
+dashedName: right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, to check or confirm something people sometimes use tag questions. For example, `You are a programmer, right?` Here, `right?` is used as a tag to check or confirm the previous statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, _?`
+
+## --blanks--
+
+`are`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
+
+***
+
+`right`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
new file mode 100644
index 00000000000..2ae09721cbf
--- /dev/null
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
@@ -0,0 +1,33 @@
+---
+id: 6543aa3df5f028dba112f275
+title: Team Lead
+challengeType: 22
+dashedName: team-lead
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+A `team lead` is a person who leads or manages a team. In the dialogue, Maria introduces herself as the team lead, meaning she has a leadership role.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`I'm Maria, the _ _.`
+
+## --blanks--
+
+team
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+lead
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
new file mode 100644
index 00000000000..3349bcfead9
--- /dev/null
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
@@ -0,0 +1,25 @@
+---
+id: 6543aae6f5f028dba112f277
+title: "That's Right: 2"
+challengeType: 22
+dashedName: thats-right-2
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+Placeholder Description \_\_\_ \_\_
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, _ _! I'm Tom McKenzie. It's a pleasure to meet you.`
+
+## --blanks--
+
+`that's`
+
+***
+
+`right`
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
new file mode 100644
index 00000000000..e85982fd561
--- /dev/null
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
@@ -0,0 +1,49 @@
+---
+id: 6543aaa9f5f028dba112f276
+title: That's Right
+challengeType: 19
+dashedName: thats-right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+When someone makes a correct assumption or guess about you, you can confirm it using phrases like `that's right`. It's a way of agreeing or saying yes to what is said.
+
+# --question--
+
+## --text--
+
+Which phrase does Tom use to confirm Maria's statement about him?
+
+## --answers--
+
+`that's wrong`
+
+### --feedback--
+
+`That's wrong` is used to disagree.
+
+***
+
+`that's okay`
+
+### --feedback--
+
+`that's okay` usually shows acceptance, not confirmation.
+
+***
+
+`that's right`
+
+***
+
+`that's left`
+
+### --feedback--
+
+`that's left` refers to a direction, not confirmation.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
new file mode 100644
index 00000000000..dd254987129
--- /dev/null
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
@@ -0,0 +1,27 @@
+---
+id: 651dd5296ffb500e3f2ce479
+title: You Are
+challengeType: 22
+dashedName: you-are
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, when making introductions or identifying someone, you use the verb `to be`. In this case, `You are` is used to address the person Maria is talking to and affirmatively identify their occupation.
+
+Maria is introducing herself and confirming Tom's job role. `Are` is used in the present affirmative to make a statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, right?`
+
+## --blanks--
+
+are
+
+### --feedback--
+
+The verb `to be` is an irregular verb. When conjugated with the pronoun `you`, `be` becomes `are`. For example: `You are an English learner.`
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
new file mode 100644
index 00000000000..7aa1e30008d
--- /dev/null
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5a46ffb500e3f2ce47b
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+***
+
+Giving a job description.
+
+***
+
+Making a statement based on her assumption.
+
+***
+
+Expressing a possibility.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
new file mode 100644
index 00000000000..2ee50fe5647
--- /dev/null
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5e46ffb500e3f2ce47e
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
new file mode 100644
index 00000000000..adc4b41f091
--- /dev/null
+++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd6071d697d0aab7833b6
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/portuguese/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml b/curriculum/challenges/portuguese/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml
new file mode 100644
index 00000000000..3ea323ff9d9
--- /dev/null
+++ b/curriculum/challenges/portuguese/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml
@@ -0,0 +1,10 @@
+---
+id: 651dd7e01d697d0aab7833b7
+title: A2 English for Developers Certification
+certification: a2-english-for-developers
+challengeType: 7
+isPrivate: true
+tests:
+ -
+ id: 651dd3e06ffb500e3f2ce478
+ title: Challenge 1
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
index 7122c51662e..d1288e25989 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
@@ -81,13 +81,13 @@ O objeto `foods` deve ter a chave `strawberries` com o valor de `35`.
assert(foods.strawberries === 27);
```
-Os pares de chave-valor devem serem definidos usando a notação de ponto ou de colchetes.
+The definition of the `foods` object should not be changed.
```js
assert(
- code.search(/bananas:/) === -1 &&
- code.search(/grapes:/) === -1 &&
- code.search(/strawberries:/) === -1
+ code.search(/let foods/) === -1 &&
+ code.search(/const\s+foods\s*=\s*{\s*apples:\s*25,\s*oranges:\s*32,\s*plums:\s*28\s*};/
+) !== -1
);
```
@@ -96,7 +96,7 @@ assert(
## --seed-contents--
```js
-let foods = {
+const foods = {
apples: 25,
oranges: 32,
plums: 28
@@ -112,7 +112,7 @@ console.log(foods);
# --solutions--
```js
-let foods = {
+const foods = {
apples: 25,
oranges: 32,
plums: 28
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
index ea526b8a13c..f073456a7d8 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
@@ -11,24 +11,43 @@ Assim como fez com os outros elementos `input` e `label`, vincule a `textarea` a
# --hints--
-Você deve dar ao elemento `label` um atributo `for`.
+You should give the `textarea` element an `id` attribute.
```js
-assert.notEmpty(document.querySelectorAll('.formrow > .question-block')?.[1]?.querySelector('label')?.htmlFor);
+assert.notEmpty(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id);
```
-Você deve dar ao elemento `textarea` um atributo `id` que corresponda ao atributo `for` do elemento `label`.
+You cannot include spaces in the `id` for the `textarea` element.
+
+```js
+assert.match(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id, /^\S+$/);
+```
+
+You must choose a different `id` for the `textarea` element because another element is using that `id`.
+
+```js
+const textareaId = document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id;
+assert.equal(document.querySelectorAll(`[id='${textareaId.replaceAll(/(['\\])/g, "\\$1")}']`).length, 1);
+```
+
+You should give the `label` element a `for` attribute matching the `id` of the `textarea` element.
```js
assert.equal(document.querySelectorAll('.formrow > .question-block')?.[1]?.querySelector('label')?.htmlFor, document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id);
```
-Você deve dar ao elemento `textarea` um atributo `name`.
+You should give the `textarea` element a `name` attribute.
```js
assert.notEmpty(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.name);
```
+You should use at least one non-space character in the `name` attribute for the `textarea`.
+
+```js
+assert.match(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.name, /\S/);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
index b0261f1fbd9..8690ba16433 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
@@ -148,10 +148,10 @@ assert.equal(document.querySelector('button[type="submit"]')?.textContent ?? doc
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
index 921f0c24e9c..e9037996b80 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
@@ -48,6 +48,20 @@ const itemPMarginBottom = new __helpers.CSSHelp(document).getStyle('.item p')?.g
assert(itemPMarginBottom === '5px');
```
+Your `p` elements nested in your `.item` elements should not have a `margin-left` set.
+
+```js
+const itemPMarginLeft = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-left');
+assert(!itemPMarginLeft);
+```
+
+Your `p` elements nested in your `.item` elements should not have a `margin-right` set.
+
+```js
+const itemPMarginRight = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-right');
+assert(!itemPMarginRight);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
index 34b704c12a5..f25e77f7825 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
@@ -9,7 +9,7 @@ dashedName: step-28
Atualmente, quando alguém envia o formulário, pode enviá-lo sem marcar os botões de opção. Embora você tenha usado anteriormente um atributo `required` para indicar que o input é necessário, isso pode não funcionar neste caso, pois adicionar o atributo às duas entradas transmitirá a informação errada aos usuários do formulário.
-Para resolver isso, você pode fornecer o contexto do que é necessário adicionando um elemento `legend` abaixo do segundo `fieldset` com o texto `Account type (required)`. Assim sendo, adicione o atributo `checked` à entrada `Personal` para se certificar de que o formulário seja enviado com os dados necessários nele.
+To solve this, you can provide context of what is needed by adding a `legend` element with text `Account type (required)` before the `label` elements within the second `fieldset`. Then add the `checked` attribute to the `Personal` input to ensure the form is submitted with the required data in it.
# --hints--
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
index 7ae06271069..792df06acf2 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
@@ -17,19 +17,12 @@ Você deve ter um elemento `link`.
assert.match(code, //)
```
-O elemento `link` deve ter um atributo `href` com o valor `./styles.css`.
-
-```js
-assert.match(code, //)
-```
-
-
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
index dbb6385e21a..713b4eb3b33 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
@@ -65,14 +65,16 @@ body {
background-color: #c9d2fc;
}
+--fcc-editable-region--
.cat-head {
- --fcc-editable-region--
- --fcc-editable-region--
+
+
background: linear-gradient(#5e5e5e 85%, #45454f 100%);
width: 205px;
height: 180px;
border: 1px solid #000;
border-radius: 46%;
}
+--fcc-editable-region--
```
diff --git a/curriculum/challenges/portuguese/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md b/curriculum/challenges/portuguese/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
index 14a6a2d757e..f55643cbb01 100644
--- a/curriculum/challenges/portuguese/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
+++ b/curriculum/challenges/portuguese/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
@@ -13,6 +13,12 @@ Defina a variável `hello` como "world". Em seguida, imprima o valor.
# --hints--
+The source code should include `one = 2`
+
+```js
+assert(code.match(/one\s*=\s*2/))
+```
+
A variável `hello` deve ser igual a "world".
```js
@@ -27,12 +33,6 @@ A variável `hello` deve ser igual a "world".
--fcc-editable-region--
one = 1
hello = "goodbye"
-def a_function():
- local_thing = "world"
- print(local_thing)
-
-a_function()
-
print(hello)
--fcc-editable-region--
```
@@ -40,7 +40,7 @@ print(hello)
# --solutions--
```py
-one = 1
+one = 2
hello = "world"
print(hello)
```
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
new file mode 100644
index 00000000000..a8abd3ff027
--- /dev/null
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
@@ -0,0 +1,93 @@
+---
+id: 651dd5ae6ffb500e3f2ce47c
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+```js
+console.log('with code');
+```
+
+***
+
+Making a statement based on her assumption.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Expressing a possibility.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
new file mode 100644
index 00000000000..27f5dcb5e42
--- /dev/null
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5d86ffb500e3f2ce47d
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
new file mode 100644
index 00000000000..a79f83d6f5a
--- /dev/null
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd5f41d697d0aab7833b5
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
new file mode 100644
index 00000000000..13028d7c28a
--- /dev/null
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
@@ -0,0 +1,15 @@
+---
+id: 651dd3e06ffb500e3f2ce478
+title: "Dialogue: Introducing"
+challengeType: 21
+videoId: nLDychdBwUg
+dashedName: dialogue-introducing
+---
+
+# --description--
+
+What the video above to understand the context of the upcoming lessons.
+
+# --assignment--
+
+Watch the video
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
new file mode 100644
index 00000000000..3d67f522c07
--- /dev/null
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
@@ -0,0 +1,49 @@
+---
+id: 6543abeff5f028dba112f278
+title: "I am: I'm"
+challengeType: 19
+dashedName: i-am-im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, the verb `to be` is used to talk about identities, characteristics, and more. The contraction `I'm` is a combination of `I` and `am`. Here, Tom uses it to introduce himself.
+
+# --question--
+
+## --text--
+
+Which operation correctly expands the contraction `I'm`?
+
+## --answers--
+
+`I is`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I am`
+
+***
+
+`I was`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I have`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+## --video-solution--
+
+2
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
new file mode 100644
index 00000000000..a2aa6a8f717
--- /dev/null
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
@@ -0,0 +1,21 @@
+---
+id: 6543abf5f5f028dba112f279
+title: I'm
+challengeType: 22
+dashedName: im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+The word `I'm` is a contraction of `I am`. Contractions are a way to shorten common combinations of words, especially with verbs.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, that's right! _ Tom McKenzie.`
+
+## --blanks--
+
+`I'm`
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
new file mode 100644
index 00000000000..3b8b7cff0bd
--- /dev/null
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
@@ -0,0 +1,53 @@
+---
+id: 6537e6ece93e5724eeb27c54
+title: Name and Job Title
+challengeType: 19
+dashedName: name-and-job-title
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, we often mention our job or role in a company by saying, `I'm [Name], the [Job title].` This lets others know our position or role.
+
+# --question--
+
+## --text--
+
+What is Maria's job role at the company?
+
+## --answers--
+
+`Graphic Designer`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Member`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Lead`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`CEO`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
new file mode 100644
index 00000000000..2a3c405b6ad
--- /dev/null
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
@@ -0,0 +1,33 @@
+---
+id: 651dd5386ffb500e3f2ce47a
+title: Right
+challengeType: 22
+dashedName: right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, to check or confirm something people sometimes use tag questions. For example, `You are a programmer, right?` Here, `right?` is used as a tag to check or confirm the previous statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, _?`
+
+## --blanks--
+
+`are`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
+
+***
+
+`right`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
new file mode 100644
index 00000000000..2ae09721cbf
--- /dev/null
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
@@ -0,0 +1,33 @@
+---
+id: 6543aa3df5f028dba112f275
+title: Team Lead
+challengeType: 22
+dashedName: team-lead
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+A `team lead` is a person who leads or manages a team. In the dialogue, Maria introduces herself as the team lead, meaning she has a leadership role.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`I'm Maria, the _ _.`
+
+## --blanks--
+
+team
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+lead
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
new file mode 100644
index 00000000000..3349bcfead9
--- /dev/null
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
@@ -0,0 +1,25 @@
+---
+id: 6543aae6f5f028dba112f277
+title: "That's Right: 2"
+challengeType: 22
+dashedName: thats-right-2
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+Placeholder Description \_\_\_ \_\_
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, _ _! I'm Tom McKenzie. It's a pleasure to meet you.`
+
+## --blanks--
+
+`that's`
+
+***
+
+`right`
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
new file mode 100644
index 00000000000..e85982fd561
--- /dev/null
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
@@ -0,0 +1,49 @@
+---
+id: 6543aaa9f5f028dba112f276
+title: That's Right
+challengeType: 19
+dashedName: thats-right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+When someone makes a correct assumption or guess about you, you can confirm it using phrases like `that's right`. It's a way of agreeing or saying yes to what is said.
+
+# --question--
+
+## --text--
+
+Which phrase does Tom use to confirm Maria's statement about him?
+
+## --answers--
+
+`that's wrong`
+
+### --feedback--
+
+`That's wrong` is used to disagree.
+
+***
+
+`that's okay`
+
+### --feedback--
+
+`that's okay` usually shows acceptance, not confirmation.
+
+***
+
+`that's right`
+
+***
+
+`that's left`
+
+### --feedback--
+
+`that's left` refers to a direction, not confirmation.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
new file mode 100644
index 00000000000..dd254987129
--- /dev/null
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
@@ -0,0 +1,27 @@
+---
+id: 651dd5296ffb500e3f2ce479
+title: You Are
+challengeType: 22
+dashedName: you-are
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, when making introductions or identifying someone, you use the verb `to be`. In this case, `You are` is used to address the person Maria is talking to and affirmatively identify their occupation.
+
+Maria is introducing herself and confirming Tom's job role. `Are` is used in the present affirmative to make a statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, right?`
+
+## --blanks--
+
+are
+
+### --feedback--
+
+The verb `to be` is an irregular verb. When conjugated with the pronoun `you`, `be` becomes `are`. For example: `You are an English learner.`
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
new file mode 100644
index 00000000000..7aa1e30008d
--- /dev/null
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5a46ffb500e3f2ce47b
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+***
+
+Giving a job description.
+
+***
+
+Making a statement based on her assumption.
+
+***
+
+Expressing a possibility.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
new file mode 100644
index 00000000000..2ee50fe5647
--- /dev/null
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5e46ffb500e3f2ce47e
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
new file mode 100644
index 00000000000..adc4b41f091
--- /dev/null
+++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd6071d697d0aab7833b6
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/swahili/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml b/curriculum/challenges/swahili/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml
new file mode 100644
index 00000000000..3ea323ff9d9
--- /dev/null
+++ b/curriculum/challenges/swahili/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml
@@ -0,0 +1,10 @@
+---
+id: 651dd7e01d697d0aab7833b7
+title: A2 English for Developers Certification
+certification: a2-english-for-developers
+challengeType: 7
+isPrivate: true
+tests:
+ -
+ id: 651dd3e06ffb500e3f2ce478
+ title: Challenge 1
diff --git a/curriculum/challenges/swahili/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md b/curriculum/challenges/swahili/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
index 5bec1202dbb..99f116debcc 100644
--- a/curriculum/challenges/swahili/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
+++ b/curriculum/challenges/swahili/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
@@ -81,13 +81,13 @@ The `foods` object should have a key `strawberries` with a value of `27`.
assert(foods.strawberries === 27);
```
-The key-value pairs should be set using dot or bracket notation.
+The definition of the `foods` object should not be changed.
```js
assert(
- code.search(/bananas:/) === -1 &&
- code.search(/grapes:/) === -1 &&
- code.search(/strawberries:/) === -1
+ code.search(/let foods/) === -1 &&
+ code.search(/const\s+foods\s*=\s*{\s*apples:\s*25,\s*oranges:\s*32,\s*plums:\s*28\s*};/
+) !== -1
);
```
@@ -96,7 +96,7 @@ assert(
## --seed-contents--
```js
-let foods = {
+const foods = {
apples: 25,
oranges: 32,
plums: 28
@@ -112,7 +112,7 @@ console.log(foods);
# --solutions--
```js
-let foods = {
+const foods = {
apples: 25,
oranges: 32,
plums: 28
diff --git a/curriculum/challenges/swahili/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md b/curriculum/challenges/swahili/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
index 66983ab6aa7..fcc2df016f9 100644
--- a/curriculum/challenges/swahili/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
+++ b/curriculum/challenges/swahili/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
@@ -11,24 +11,43 @@ Kama ilivyo kwa vipengele vingine vya `input` na `label`, unganisha `textarea` n
# --hints--
-Unapaswa kukipa kipengele cha `label` sifa ya `for`.
+You should give the `textarea` element an `id` attribute.
```js
-assert.notEmpty(document.querySelectorAll('.formrow > .question-block')?.[1]?.querySelector('label')?.htmlFor);
+assert.notEmpty(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id);
```
-Unapaswa kukipa kipengele cha `textarea` `id` inayolingana na sifa ya `for` ya kipengele cha `label`.
+You cannot include spaces in the `id` for the `textarea` element.
+
+```js
+assert.match(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id, /^\S+$/);
+```
+
+You must choose a different `id` for the `textarea` element because another element is using that `id`.
+
+```js
+const textareaId = document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id;
+assert.equal(document.querySelectorAll(`[id='${textareaId.replaceAll(/(['\\])/g, "\\$1")}']`).length, 1);
+```
+
+You should give the `label` element a `for` attribute matching the `id` of the `textarea` element.
```js
assert.equal(document.querySelectorAll('.formrow > .question-block')?.[1]?.querySelector('label')?.htmlFor, document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id);
```
-Unapaswa kukipa kipengele cha `textarea` sifa ya `name`.
+You should give the `textarea` element a `name` attribute.
```js
assert.notEmpty(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.name);
```
+You should use at least one non-space character in the `name` attribute for the `textarea`.
+
+```js
+assert.match(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.name, /\S/);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/swahili/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md b/curriculum/challenges/swahili/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
index ecc76731943..15630904981 100644
--- a/curriculum/challenges/swahili/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
+++ b/curriculum/challenges/swahili/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
@@ -148,10 +148,10 @@ assert.equal(document.querySelector('button[type="submit"]')?.textContent ?? doc
diff --git a/curriculum/challenges/swahili/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md b/curriculum/challenges/swahili/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
index ee381112e79..97bca4af6c9 100644
--- a/curriculum/challenges/swahili/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
+++ b/curriculum/challenges/swahili/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
@@ -48,6 +48,20 @@ const itemPMarginBottom = new __helpers.CSSHelp(document).getStyle('.item p')?.g
assert(itemPMarginBottom === '5px');
```
+Your `p` elements nested in your `.item` elements should not have a `margin-left` set.
+
+```js
+const itemPMarginLeft = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-left');
+assert(!itemPMarginLeft);
+```
+
+Your `p` elements nested in your `.item` elements should not have a `margin-right` set.
+
+```js
+const itemPMarginRight = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-right');
+assert(!itemPMarginRight);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/swahili/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md b/curriculum/challenges/swahili/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
index 87ec1d9dcc8..1a81ddff05f 100644
--- a/curriculum/challenges/swahili/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
+++ b/curriculum/challenges/swahili/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
@@ -9,7 +9,7 @@ dashedName: step-28
Currently when someone submit the form, they can submit it without checking the radio inputs. Although you had used `required` attribute to indicate the the input is required previously, this can't work in this case, because adding required to both inputs, will convey the wrong information to the form users.
-To solve this, you can provide context of what is needed by adding `legend` element below the second `fieldset` with text `Account type (required)`, then add `checked` attribute to the `Personal` input to make sure that the form is submitted with the required data in it.
+To solve this, you can provide context of what is needed by adding a `legend` element with text `Account type (required)` before the `label` elements within the second `fieldset`. Then add the `checked` attribute to the `Personal` input to ensure the form is submitted with the required data in it.
# --hints--
diff --git a/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md b/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
index 581dd2456a6..49c71650963 100644
--- a/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
+++ b/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
@@ -17,19 +17,12 @@ Unapaswa kuwa na kipengele cha `link`.
assert.match(code, //)
```
-Kipengele chako cha `link` kinafaa kuwa na sifa ya `href` yenye thamani `./styles.css`.
-
-```js
-assert.match(code, //)
-```
-
-
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md b/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
index e2a9a7303f0..17fa901223f 100644
--- a/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
+++ b/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
@@ -65,14 +65,16 @@ body {
background-color: #c9d2fc;
}
+--fcc-editable-region--
.cat-head {
- --fcc-editable-region--
- --fcc-editable-region--
+
+
background: linear-gradient(#5e5e5e 85%, #45454f 100%);
width: 205px;
height: 180px;
border: 1px solid #000;
border-radius: 46%;
}
+--fcc-editable-region--
```
diff --git a/curriculum/challenges/swahili/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md b/curriculum/challenges/swahili/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
index b2dda0bcbc7..dc1e0d1e25d 100644
--- a/curriculum/challenges/swahili/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
+++ b/curriculum/challenges/swahili/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
@@ -13,6 +13,12 @@ Set the `hello` variable to "world". Then print the value.
# --hints--
+The source code should include `one = 2`
+
+```js
+assert(code.match(/one\s*=\s*2/))
+```
+
The `hello` variable should equal "world".
```js
@@ -27,12 +33,6 @@ The `hello` variable should equal "world".
--fcc-editable-region--
one = 1
hello = "goodbye"
-def a_function():
- local_thing = "world"
- print(local_thing)
-
-a_function()
-
print(hello)
--fcc-editable-region--
```
@@ -40,7 +40,7 @@ print(hello)
# --solutions--
```py
-one = 1
+one = 2
hello = "world"
print(hello)
```
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
new file mode 100644
index 00000000000..a8abd3ff027
--- /dev/null
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
@@ -0,0 +1,93 @@
+---
+id: 651dd5ae6ffb500e3f2ce47c
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+```js
+console.log('with code');
+```
+
+***
+
+Making a statement based on her assumption.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Expressing a possibility.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
new file mode 100644
index 00000000000..27f5dcb5e42
--- /dev/null
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5d86ffb500e3f2ce47d
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
new file mode 100644
index 00000000000..a79f83d6f5a
--- /dev/null
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd5f41d697d0aab7833b5
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
new file mode 100644
index 00000000000..13028d7c28a
--- /dev/null
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
@@ -0,0 +1,15 @@
+---
+id: 651dd3e06ffb500e3f2ce478
+title: "Dialogue: Introducing"
+challengeType: 21
+videoId: nLDychdBwUg
+dashedName: dialogue-introducing
+---
+
+# --description--
+
+What the video above to understand the context of the upcoming lessons.
+
+# --assignment--
+
+Watch the video
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
new file mode 100644
index 00000000000..3d67f522c07
--- /dev/null
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
@@ -0,0 +1,49 @@
+---
+id: 6543abeff5f028dba112f278
+title: "I am: I'm"
+challengeType: 19
+dashedName: i-am-im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, the verb `to be` is used to talk about identities, characteristics, and more. The contraction `I'm` is a combination of `I` and `am`. Here, Tom uses it to introduce himself.
+
+# --question--
+
+## --text--
+
+Which operation correctly expands the contraction `I'm`?
+
+## --answers--
+
+`I is`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I am`
+
+***
+
+`I was`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I have`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+## --video-solution--
+
+2
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
new file mode 100644
index 00000000000..a2aa6a8f717
--- /dev/null
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
@@ -0,0 +1,21 @@
+---
+id: 6543abf5f5f028dba112f279
+title: I'm
+challengeType: 22
+dashedName: im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+The word `I'm` is a contraction of `I am`. Contractions are a way to shorten common combinations of words, especially with verbs.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, that's right! _ Tom McKenzie.`
+
+## --blanks--
+
+`I'm`
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
new file mode 100644
index 00000000000..3b8b7cff0bd
--- /dev/null
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
@@ -0,0 +1,53 @@
+---
+id: 6537e6ece93e5724eeb27c54
+title: Name and Job Title
+challengeType: 19
+dashedName: name-and-job-title
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, we often mention our job or role in a company by saying, `I'm [Name], the [Job title].` This lets others know our position or role.
+
+# --question--
+
+## --text--
+
+What is Maria's job role at the company?
+
+## --answers--
+
+`Graphic Designer`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Member`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Lead`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`CEO`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
new file mode 100644
index 00000000000..2a3c405b6ad
--- /dev/null
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
@@ -0,0 +1,33 @@
+---
+id: 651dd5386ffb500e3f2ce47a
+title: Right
+challengeType: 22
+dashedName: right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, to check or confirm something people sometimes use tag questions. For example, `You are a programmer, right?` Here, `right?` is used as a tag to check or confirm the previous statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, _?`
+
+## --blanks--
+
+`are`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
+
+***
+
+`right`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
new file mode 100644
index 00000000000..2ae09721cbf
--- /dev/null
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
@@ -0,0 +1,33 @@
+---
+id: 6543aa3df5f028dba112f275
+title: Team Lead
+challengeType: 22
+dashedName: team-lead
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+A `team lead` is a person who leads or manages a team. In the dialogue, Maria introduces herself as the team lead, meaning she has a leadership role.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`I'm Maria, the _ _.`
+
+## --blanks--
+
+team
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+lead
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
new file mode 100644
index 00000000000..3349bcfead9
--- /dev/null
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
@@ -0,0 +1,25 @@
+---
+id: 6543aae6f5f028dba112f277
+title: "That's Right: 2"
+challengeType: 22
+dashedName: thats-right-2
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+Placeholder Description \_\_\_ \_\_
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, _ _! I'm Tom McKenzie. It's a pleasure to meet you.`
+
+## --blanks--
+
+`that's`
+
+***
+
+`right`
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
new file mode 100644
index 00000000000..e85982fd561
--- /dev/null
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
@@ -0,0 +1,49 @@
+---
+id: 6543aaa9f5f028dba112f276
+title: That's Right
+challengeType: 19
+dashedName: thats-right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+When someone makes a correct assumption or guess about you, you can confirm it using phrases like `that's right`. It's a way of agreeing or saying yes to what is said.
+
+# --question--
+
+## --text--
+
+Which phrase does Tom use to confirm Maria's statement about him?
+
+## --answers--
+
+`that's wrong`
+
+### --feedback--
+
+`That's wrong` is used to disagree.
+
+***
+
+`that's okay`
+
+### --feedback--
+
+`that's okay` usually shows acceptance, not confirmation.
+
+***
+
+`that's right`
+
+***
+
+`that's left`
+
+### --feedback--
+
+`that's left` refers to a direction, not confirmation.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
new file mode 100644
index 00000000000..dd254987129
--- /dev/null
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
@@ -0,0 +1,27 @@
+---
+id: 651dd5296ffb500e3f2ce479
+title: You Are
+challengeType: 22
+dashedName: you-are
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, when making introductions or identifying someone, you use the verb `to be`. In this case, `You are` is used to address the person Maria is talking to and affirmatively identify their occupation.
+
+Maria is introducing herself and confirming Tom's job role. `Are` is used in the present affirmative to make a statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, right?`
+
+## --blanks--
+
+are
+
+### --feedback--
+
+The verb `to be` is an irregular verb. When conjugated with the pronoun `you`, `be` becomes `are`. For example: `You are an English learner.`
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
new file mode 100644
index 00000000000..7aa1e30008d
--- /dev/null
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5a46ffb500e3f2ce47b
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+***
+
+Giving a job description.
+
+***
+
+Making a statement based on her assumption.
+
+***
+
+Expressing a possibility.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
new file mode 100644
index 00000000000..2ee50fe5647
--- /dev/null
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5e46ffb500e3f2ce47e
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
new file mode 100644
index 00000000000..adc4b41f091
--- /dev/null
+++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd6071d697d0aab7833b6
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/ukrainian/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml b/curriculum/challenges/ukrainian/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml
new file mode 100644
index 00000000000..3ea323ff9d9
--- /dev/null
+++ b/curriculum/challenges/ukrainian/00-certifications/a2-english-for-developers-certification/a2-english-for-developers-certification.yml
@@ -0,0 +1,10 @@
+---
+id: 651dd7e01d697d0aab7833b7
+title: A2 English for Developers Certification
+certification: a2-english-for-developers
+challengeType: 7
+isPrivate: true
+tests:
+ -
+ id: 651dd3e06ffb500e3f2ce478
+ title: Challenge 1
diff --git a/curriculum/challenges/ukrainian/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md b/curriculum/challenges/ukrainian/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
index d0ec64dcc26..2a8b9be5d6d 100644
--- a/curriculum/challenges/ukrainian/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
+++ b/curriculum/challenges/ukrainian/02-javascript-algorithms-and-data-structures/basic-data-structures/add-key-value-pairs-to-javascript-objects.md
@@ -81,13 +81,13 @@ assert(foods.grapes === 35);
assert(foods.strawberries === 27);
```
-Встановіть пари ключ-значення, використовуючи дужкову або точкову нотацію.
+The definition of the `foods` object should not be changed.
```js
assert(
- code.search(/bananas:/) === -1 &&
- code.search(/grapes:/) === -1 &&
- code.search(/strawberries:/) === -1
+ code.search(/let foods/) === -1 &&
+ code.search(/const\s+foods\s*=\s*{\s*apples:\s*25,\s*oranges:\s*32,\s*plums:\s*28\s*};/
+) !== -1
);
```
@@ -96,7 +96,7 @@ assert(
## --seed-contents--
```js
-let foods = {
+const foods = {
apples: 25,
oranges: 32,
plums: 28
@@ -112,7 +112,7 @@ console.log(foods);
# --solutions--
```js
-let foods = {
+const foods = {
apples: 25,
oranges: 32,
plums: 28
diff --git a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/assert-deep-equality-with-.deepequal-and-.notdeepequal.md b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/assert-deep-equality-with-.deepequal-and-.notdeepequal.md
index 9c2a683b0e6..22660dd9c0d 100644
--- a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/assert-deep-equality-with-.deepequal-and-.notdeepequal.md
+++ b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/assert-deep-equality-with-.deepequal-and-.notdeepequal.md
@@ -14,7 +14,7 @@ dashedName: assert-deep-equality-with--deepequal-and--notdeepequal
# --instructions--
-Within `tests/1_unit-tests.js` under the test labeled `#7` in the `Equality` suite, change each `assert` to either `assert.deepEqual` or `assert.notDeepEqual` to make the test pass (should evaluate to `true`). Не змінюйте аргументи, передані до тверджень.
+У межах `tests/1_unit-tests.js` під тестом з міткою `#7` в наборі `Equality` змініть кожний `assert` на `assert.deepEqual` або `assert.notDeepEqual`, щоб пройти тест (повинен дорівнювати `true`). Не змінюйте аргументи, передані до тверджень.
# --hints--
diff --git a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/compare-the-properties-of-two-elements.md b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/compare-the-properties-of-two-elements.md
index beb639e0ba3..0240a92b340 100644
--- a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/compare-the-properties-of-two-elements.md
+++ b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/compare-the-properties-of-two-elements.md
@@ -12,7 +12,7 @@ dashedName: compare-the-properties-of-two-elements
# --instructions--
-Within `tests/1_unit-tests.js` under the test labeled `#8` in the `Comparisons` suite, change each `assert` to either `assert.isAbove` or `assert.isAtMost` to make the test pass (should evaluate to `true`). Не змінюйте аргументи, передані до тверджень.
+У межах `tests/1_unit-tests.js` під тестом з міткою `#8` в наборі `Comparisons` змініть кожний `assert` на `assert.isAbove` або `assert.isAtMost`, щоб пройти тест (повинен дорівнювати `true`). Не змінюйте аргументи, передані до тверджень.
# --hints--
diff --git a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/learn-how-javascript-assertions-work.md b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/learn-how-javascript-assertions-work.md
index ba336dbdc5b..59dc1c70362 100644
--- a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/learn-how-javascript-assertions-work.md
+++ b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/learn-how-javascript-assertions-work.md
@@ -24,7 +24,7 @@ dashedName: learn-how-javascript-assertions-work
# --instructions--
-Within `tests/1_unit-tests.js` under the test labeled `#1` in the `Basic Assertions` suite, change each `assert` to either `assert.isNull` or `assert.isNotNull` to make the test pass (should evaluate to `true`). Не змінюйте аргументи, передані до тверджень.
+У межах `tests/1_unit-tests.js` під тестом з міткою `#1` в наборі `Basic Assertions` змініть кожний `assert` на `assert.isNull` або `assert.isNotNull`, щоб пройти тест (повинен дорівнювати `true`). Не змінюйте аргументи, передані до тверджень.
# --hints--
diff --git a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-for-truthiness.md b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-for-truthiness.md
index 2f4b0f58e67..aa0fef435f2 100644
--- a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-for-truthiness.md
+++ b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-for-truthiness.md
@@ -22,7 +22,7 @@ assert.isTrue(1, 'This will NOT pass with the number value 1');
# --instructions--
-Within `tests/1_unit-tests.js` under the test labeled `#4` in the `Basic Assertions` suite, change each `assert` to either `assert.isTrue` or `assert.isNotTrue` to make the test pass (should evaluate to `true`). Не змінюйте аргументи, передані до тверджень.
+У межах `tests/1_unit-tests.js` під тестом з міткою `#4` в наборі `Basic Assertions` змініть кожний `assert` на `assert.isTrue` або `assert.isNotTrue`, щоб пройти тест (повинен дорівнювати `true`). Не змінюйте аргументи, передані до тверджень.
# --hints--
diff --git a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-string-contains-a-substring.md b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-string-contains-a-substring.md
index 101a35e3df2..18b40f0ac81 100644
--- a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-string-contains-a-substring.md
+++ b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-string-contains-a-substring.md
@@ -14,7 +14,7 @@ dashedName: test-if-a-string-contains-a-substring
# --instructions--
-Within `tests/1_unit-tests.js` under the test labeled `#14` in the `Strings` suite, change each `assert` to either `assert.include` or `assert.notInclude` to make the test pass (should evaluate to `true`). Не змінюйте аргументи, передані до тверджень.
+У межах `tests/1_unit-tests.js` під тестом з міткою `#14` в наборі `Strings` змініть кожний `assert` на `assert.include` або `assert.notInclude`, щоб пройти тест (повинен дорівнювати `true`). Не змінюйте аргументи, передані до тверджень.
# --hints--
diff --git a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-falls-within-a-specific-range.md b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-falls-within-a-specific-range.md
index dbc22f1704c..42b0effaa1d 100644
--- a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-falls-within-a-specific-range.md
+++ b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-falls-within-a-specific-range.md
@@ -18,7 +18,7 @@ dashedName: test-if-a-value-falls-within-a-specific-range
# --instructions--
-Within `tests/1_unit-tests.js` under the test labeled `#10` in the `Comparisons` suite, change each `assert` to `assert.approximately` to make the test pass (should evaluate to `true`).
+У межах `tests/1_unit-tests.js` під тестом з міткою `#10` в наборі `Comparisons` змініть кожен `assert` на `assert.approximately`, щоб пройти тест (повинен дорівнювати `true`).
Виберіть мінімальний діапазон (третій параметр) для того, щоб тест завжди проходив. Він повинен бути менший за 1.
diff --git a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-a-string.md b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-a-string.md
index 99e8e97796b..92a631a821e 100644
--- a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-a-string.md
+++ b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-a-string.md
@@ -14,7 +14,7 @@ dashedName: test-if-a-value-is-a-string
# --instructions--
-Within `tests/1_unit-tests.js` under the test labeled `#13` in the `Strings` suite, change each `assert` to either `assert.isString` or `assert.isNotString` to make the test pass (should evaluate to `true`). Не змінюйте аргументи, передані до тверджень.
+У межах `tests/1_unit-tests.js` під тестом з міткою `#13` в наборі `Strings` змініть кожний `assert` на `assert.isString` або `assert.isNotString`, щоб пройти тест (повинен дорівнювати `true`). Не змінюйте аргументи, передані до тверджень.
# --hints--
diff --git a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-an-array.md b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-an-array.md
index df7282039a0..72bcd79dba9 100644
--- a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-an-array.md
+++ b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-an-array.md
@@ -12,7 +12,7 @@ dashedName: test-if-a-value-is-an-array
# --instructions--
-Within `tests/1_unit-tests.js` under the test labeled `#11` in the `Arrays` suite, change each `assert` to either `assert.isArray` or `assert.isNotArray` to make the test pass (should evaluate to `true`). Не змінюйте аргументи, передані до тверджень.
+У межах `tests/1_unit-tests.js` під тестом з міткою `#11` в наборі `Arrays` змініть кожний `assert` на `assert.isArray` або `assert.isNotArray`, щоб пройти тест (повинен дорівнювати `true`). Не змінюйте аргументи, передані до тверджень.
# --hints--
diff --git a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-of-a-specific-data-structure-type.md b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-of-a-specific-data-structure-type.md
index 12dee2359ed..5ea57c89c07 100644
--- a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-of-a-specific-data-structure-type.md
+++ b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-of-a-specific-data-structure-type.md
@@ -14,7 +14,7 @@ dashedName: test-if-a-value-is-of-a-specific-data-structure-type
# --instructions--
-Within `tests/1_unit-tests.js` under the test labeled `#17` in the `Objects` suite, change each `assert` to either `assert.typeOf` or `assert.notTypeOf` to make the test pass (should evaluate to `true`). Не змінюйте аргументи, передані до тверджень.
+У межах `tests/1_unit-tests.js` під тестом з міткою `#17` в наборі `Objects` змініть кожен `assert` на `assert.typeOf` або `assert.notTypeOf`, щоб пройти тест (повинен дорівнювати `true`). Не змінюйте аргументи, передані до тверджень.
# --hints--
diff --git a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-variable-or-function-is-defined.md b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-variable-or-function-is-defined.md
index b2d323a5742..c641e1af75e 100644
--- a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-variable-or-function-is-defined.md
+++ b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-variable-or-function-is-defined.md
@@ -12,7 +12,7 @@ dashedName: test-if-a-variable-or-function-is-defined
# --instructions--
-Within `tests/1_unit-tests.js` under the test labeled `#2` in the `Basic Assertions` suite, change each `assert` to either `assert.isDefined()` or `assert.isUndefined()` to make the test pass (should evaluate to `true`). Не змінюйте аргументи, передані до тверджень.
+У межах `tests/1_unit-tests.js` під тестом з міткою `#2` в наборі `Basic Assertions` змініть кожний `assert` на `assert.isDefined()` або `assert.isUndefined()`, щоб пройти тест (повинен дорівнювати `true`). Не змінюйте аргументи, передані до тверджень.
# --hints--
diff --git a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-array-contains-an-item.md b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-array-contains-an-item.md
index 37854201c65..96945724995 100644
--- a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-array-contains-an-item.md
+++ b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-array-contains-an-item.md
@@ -12,7 +12,7 @@ dashedName: test-if-an-array-contains-an-item
# --instructions--
-Within `tests/1_unit-tests.js` under the test labeled `#12` in the `Arrays` suite, change each `assert` to either `assert.include` or `assert.notInclude` to make the test pass (should evaluate to `true`). Не змінюйте аргументи, передані до тверджень.
+У межах `tests/1_unit-tests.js` під тестом з міткою `#12` в наборі `Arrays` змініть кожний `assert` на `assert.include` або `assert.notInclude`, щоб пройти тест (повинен дорівнювати `true`). Не змінюйте аргументи, передані до тверджень.
# --hints--
diff --git a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-has-a-property.md b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-has-a-property.md
index f29a82ffa97..c52698fbeea 100644
--- a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-has-a-property.md
+++ b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-has-a-property.md
@@ -14,7 +14,7 @@ dashedName: test-if-an-object-has-a-property
# --instructions--
-Within `tests/1_unit-tests.js` under the test labeled `#16` in the `Objects` suite, change each `assert` to either `assert.property` or `assert.notProperty` to make the test pass (should evaluate to `true`). Не змінюйте аргументи, передані до тверджень.
+У межах `tests/1_unit-tests.js` під тестом з міткою `#16` у наборі `Objects` змініть кожний `assert` на `assert.property` або `assert.notProperty`, щоб пройти тест (повинен дорівнювати `true`). Не змінюйте аргументи, передані до тверджень.
# --hints--
diff --git a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-is-an-instance-of-a-constructor.md b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-is-an-instance-of-a-constructor.md
index 70b0f7e9439..42e117b097d 100644
--- a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-is-an-instance-of-a-constructor.md
+++ b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-is-an-instance-of-a-constructor.md
@@ -14,7 +14,7 @@ dashedName: test-if-an-object-is-an-instance-of-a-constructor
# --instructions--
-Within `tests/1_unit-tests.js` under the test labeled `#18` in the `Objects` suite, change each `assert` to either `assert.instanceOf` or `assert.notInstanceOf` to make the test pass (should evaluate to `true`). Не змінюйте аргументи, передані до тверджень.
+У межах `tests/1_unit-tests.js` під тестом з міткою `#18` в наборі `Objects` змініть кожний `assert` на `assert.instanceOf` або `assert.notInstanceOf`, щоб пройти тест (повинен дорівнювати `true`). Не змінюйте аргументи, передані до тверджень.
# --hints--
diff --git a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-assert.isok-and-assert.isnotok.md b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-assert.isok-and-assert.isnotok.md
index 4f336ba1a6d..4e8d0257cbb 100644
--- a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-assert.isok-and-assert.isnotok.md
+++ b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-assert.isok-and-assert.isnotok.md
@@ -16,7 +16,7 @@ dashedName: use-assert-isok-and-assert-isnotok
# --instructions--
-Within `tests/1_unit-tests.js` under the test labeled `#3` in the `Basic Assertions` suite, change each `assert` to either `assert.isOk()` or `assert.isNotOk()` to make the test pass (should evaluate to `true`). Не змінюйте аргументи, передані до тверджень.
+У межах `tests/1_unit-tests.js` під тестом з міткою `#3` в наборі `Basic Assertions` змініть кожний `assert` на `assert.isOk()` або `assert.isNotOk()`, щоб пройти тест (повинен дорівнювати `true`). Не змінюйте аргументи, передані до тверджень.
# --hints--
diff --git a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-regular-expressions-to-test-a-string.md b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-regular-expressions-to-test-a-string.md
index 972facaea79..f2fdbebd6ac 100644
--- a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-regular-expressions-to-test-a-string.md
+++ b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-regular-expressions-to-test-a-string.md
@@ -14,7 +14,7 @@ dashedName: use-regular-expressions-to-test-a-string
# --instructions--
-Within `tests/1_unit-tests.js` under the test labeled `#15` in the `Strings` suite, change each `assert` to either `assert.match` or `assert.notMatch` to make the test pass (should evaluate to `true`). Не змінюйте аргументи, передані до тверджень.
+У межах `tests/1_unit-tests.js` під тестом з міткою `#15` в наборі `Strings` змініть кожний `assert` на `assert.match` або `assert.notMatch`, щоб пройти тест (повинен дорівнювати `true`). Не змінюйте аргументи, передані до тверджень.
# --hints--
diff --git a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-the-double-equals-to-assert-equality.md b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-the-double-equals-to-assert-equality.md
index e35c47219ce..fffbb4670ef 100644
--- a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-the-double-equals-to-assert-equality.md
+++ b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-the-double-equals-to-assert-equality.md
@@ -14,7 +14,7 @@ dashedName: use-the-double-equals-to-assert-equality
# --instructions--
-Within `tests/1_unit-tests.js` under the test labeled `#5` in the `Equality` suite, change each `assert` to either `assert.equal` or `assert.notEqual` to make the test pass (should evaluate to `true`). Не змінюйте аргументи, передані до тверджень.
+У межах `tests/1_unit-tests.js` під тестом з міткою `#5` в наборі `Equality` змініть кожний `assert` на `assert.equal` або `assert.notEqual`, щоб пройти тест (повинен дорівнювати `true`). Не змінюйте аргументи, передані до тверджень.
# --hints--
diff --git a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-the-triple-equals-to-assert-strict-equality.md b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-the-triple-equals-to-assert-strict-equality.md
index fcb3000c7ac..3e0ef2db3b5 100644
--- a/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-the-triple-equals-to-assert-strict-equality.md
+++ b/curriculum/challenges/ukrainian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-the-triple-equals-to-assert-strict-equality.md
@@ -14,7 +14,7 @@ dashedName: use-the-triple-equals-to-assert-strict-equality
# --instructions--
-Within `tests/1_unit-tests.js` under the test labeled `#6` in the `Equality` suite, change each `assert` to either `assert.strictEqual` or `assert.notStrictEqual` to make the test pass (should evaluate to `true`). Не змінюйте аргументи, передані до тверджень.
+У межах `tests/1_unit-tests.js` під тестом з міткою `#6` в наборі `Equality` змініть кожний `assert` на `assert.strictEqual` або `assert.notStrictEqual`, щоб пройти тест (повинен дорівнювати `true`). Не змінюйте аргументи, передані до тверджень.
# --hints--
diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/python-for-everybody/introduction-why-program.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/python-for-everybody/introduction-why-program.md
index e98f3777877..ac8f4d529cc 100644
--- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/python-for-everybody/introduction-why-program.md
+++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/python-for-everybody/introduction-why-program.md
@@ -34,19 +34,19 @@ dashedName: introduction-why-program
### --feedback--
-College students should learn to program, but there's a better answer.
+Студенти повинні вчитись програмувати, але є краща відповідь.
---
-People who want to become software developers.
+Людям, які хочуть стати розробниками програмного забезпечення.
### --feedback--
-People who want to become software developers should learn to program, but there's a better answer.
+Люди, які хочуть стати розробниками програмного забезпечення, повинні вчитись програмувати, але є краща відповідь.
---
-Everyone.
+Всім.
## --video-solution--
diff --git a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
index 5bd31514bde..9beebaf8f9e 100644
--- a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
+++ b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f59029474c0d3dc1c8b8.md
@@ -11,24 +11,43 @@ dashedName: step-40
# --hints--
-Ви повинні надати елементу `label` атрибут `for`.
+You should give the `textarea` element an `id` attribute.
```js
-assert.notEmpty(document.querySelectorAll('.formrow > .question-block')?.[1]?.querySelector('label')?.htmlFor);
+assert.notEmpty(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id);
```
-Ви повинні надати елементу `textarea` атрибут `id`, що відповідає атрибуту `for` елемента `label`.
+You cannot include spaces in the `id` for the `textarea` element.
+
+```js
+assert.match(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id, /^\S+$/);
+```
+
+You must choose a different `id` for the `textarea` element because another element is using that `id`.
+
+```js
+const textareaId = document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id;
+assert.equal(document.querySelectorAll(`[id='${textareaId.replaceAll(/(['\\])/g, "\\$1")}']`).length, 1);
+```
+
+You should give the `label` element a `for` attribute matching the `id` of the `textarea` element.
```js
assert.equal(document.querySelectorAll('.formrow > .question-block')?.[1]?.querySelector('label')?.htmlFor, document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.id);
```
-Ви повинні надати елементу `textarea` атрибут `name`.
+You should give the `textarea` element a `name` attribute.
```js
assert.notEmpty(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.name);
```
+You should use at least one non-space character in the `name` attribute for the `textarea`.
+
+```js
+assert.match(document.querySelectorAll('.answer')?.[1]?.querySelector('textarea')?.name, /\S/);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
index 1a95dc9015e..921e8d3b209 100644
--- a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
+++ b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145f685797bd30df9784e8c.md
@@ -148,10 +148,10 @@ assert.equal(document.querySelector('button[type="submit"]')?.textContent ?? doc
diff --git a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
index f10cf8b625c..7d8d14c29a7 100644
--- a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
+++ b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f45a276c093334f0f6e9df4.md
@@ -48,6 +48,20 @@ const itemPMarginBottom = new __helpers.CSSHelp(document).getStyle('.item p')?.g
assert(itemPMarginBottom === '5px');
```
+Your `p` elements nested in your `.item` elements should not have a `margin-left` set.
+
+```js
+const itemPMarginLeft = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-left');
+assert(!itemPMarginLeft);
+```
+
+Your `p` elements nested in your `.item` elements should not have a `margin-right` set.
+
+```js
+const itemPMarginRight = new __helpers.CSSHelp(document).getStyle('.item p')?.getPropertyValue('margin-right');
+assert(!itemPMarginRight);
+```
+
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
index b0c5a01a075..6fa1ee09619 100644
--- a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
+++ b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
@@ -9,7 +9,7 @@ dashedName: step-28
Currently when someone submit the form, they can submit it without checking the radio inputs. Although you had used `required` attribute to indicate the the input is required previously, this can't work in this case, because adding required to both inputs, will convey the wrong information to the form users.
-To solve this, you can provide context of what is needed by adding `legend` element below the second `fieldset` with text `Account type (required)`, then add `checked` attribute to the `Personal` input to make sure that the form is submitted with the required data in it.
+To solve this, you can provide context of what is needed by adding a `legend` element with text `Account type (required)` before the `label` elements within the second `fieldset`. Then add the `checked` attribute to the `Personal` input to ensure the form is submitted with the required data in it.
# --hints--
diff --git a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
index 4bd95ac6148..c765123f347 100644
--- a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
+++ b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c48df8674cf2b91020ecc.md
@@ -17,19 +17,12 @@ dashedName: step-3
assert.match(code, //)
```
-Елемент `link` повинен мати атрибут `href` зі значенням `./styles.css`.
-
-```js
-assert.match(code, //)
-```
-
-
# --seed--
## --seed-contents--
diff --git a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
index 8a7f47ae1a6..0428102f705 100644
--- a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
+++ b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5e727e56e743c9aed4a1.md
@@ -65,14 +65,16 @@ body {
background-color: #c9d2fc;
}
+--fcc-editable-region--
.cat-head {
- --fcc-editable-region--
- --fcc-editable-region--
+
+
background: linear-gradient(#5e5e5e 85%, #45454f 100%);
width: 205px;
height: 180px;
border: 1px solid #000;
border-radius: 46%;
}
+--fcc-editable-region--
```
diff --git a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-247-squares-under-a-hyperbola.md b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-247-squares-under-a-hyperbola.md
index 29bafc6996a..f6ca33ada25 100644
--- a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-247-squares-under-a-hyperbola.md
+++ b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-247-squares-under-a-hyperbola.md
@@ -18,7 +18,7 @@ dashedName: problem-247-squares-under-a-hyperbola
-The diagram shows some such squares labeled by number.
+На рисунку зображено декілька таких квадратів, позначених числами.
$S_2$ має один квадрат зліва та жодного знизу, тому індексом $S_2$ є (1, 0).
diff --git a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-254-sums-of-digit-factorials.md b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-254-sums-of-digit-factorials.md
index e8eb74fafd4..c505d2b59d1 100644
--- a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-254-sums-of-digit-factorials.md
+++ b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-254-sums-of-digit-factorials.md
@@ -1,6 +1,6 @@
---
id: 5900f46b1000cf542c50ff7d
-title: 'Problem 254: Sums of Digit Factorials'
+title: 'Завдання 254: суми факторіалів цифр'
challengeType: 1
forumTopicId: 301902
dashedName: problem-254-sums-of-digit-factorials
@@ -8,15 +8,15 @@ dashedName: problem-254-sums-of-digit-factorials
# --description--
-Define $f(n)$ as the sum of the factorials of the digits of $n$. Наприклад, $f(342) = 3! + 4! + 2! = 32$.
+Визначимо $f(n)$ як суму факторіалів цифр числа $n$. Наприклад, $f(342) = 3! + 4! + 2! = 32$.
-Define $sf(n)$ as the sum of the digits of $f(n)$. So $sf(342) = 3 + 2 = 5$.
+Визначимо $sf(n)$ як суму цифр $f(n)$. Отже, $sf(342) = 3 + 2 = 5$.
-Define $g(i)$ to be the smallest positive integer $n$ such that $sf(n) = i$. Though $sf(342)$ is 5, $sf(25)$ is also 5, and it can be verified that $g(5)$ is 25.
+Визначимо $g(i)$ як найменше натуральне число $n$, за якого $sf(n) = i$. Хоча $sf(342)$ дорівнює 5, $sf(25)$ також дорівнює 5, і можна довести, що $g(5)$ дорівнює 25.
-Define $sg(i)$ as the sum of the digits of $g(i)$. So $sg(5) = 2 + 5 = 7$.
+Визначимо $sg(i)$ як суму цифр $g(i)$. Отже, $sg(5) = 2 + 5 = 7$.
-Further, it can be verified that $g(20)$ is 267 and $\sum sg(i)$ for $1 ≤ i ≤ 20$ is 156.
+Таким чином можна довести, що $g(20)$ дорівнює 267, а $\sum sg(i)$ за умови $1 ≤ i ≤ 20$ дорівнює 156.
Чому дорівнює $\sum sg(i)$ за умови $1 ≤ i ≤ 150$?
diff --git a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-260-stone-game.md b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-260-stone-game.md
index bc90be7eebe..82f7b6b0dc9 100644
--- a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-260-stone-game.md
+++ b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-260-stone-game.md
@@ -18,19 +18,19 @@ dashedName: problem-260-stone-game
- $N$ камені з кожної з двох куп ($2N$ загалом); або
- $N$ камені з кожної з трьох куп ($3N$ загалом).
-The player taking the last stone(s) wins the game.
+Виграє той, хто забере останній камінь.
-A winning configuration is one where the first player can force a win.
+Виграшна конфігурація — це така конфігурація, в якій перший гравець може зразу виграти.
-For example, (0,0,13), (0,11,11) and (5,5,5) are winning configurations because the first player can immediately remove all stones.
+Наприклад, (0,0,13), (0,11,11) та (5,5,5) є виграшними конфігураціями, оскільки перший гравець може одразу ж забрати всі камені.
-A losing configuration is one where the second player can force a win, no matter what the first player does.
+Програшна конфігурація — це така конфігурація, в якій другий гравець може зразу виграти, незалежно від того, що робить перший гравець.
-For example, (0,1,2) and (1,3,3) are losing configurations: any legal move leaves a winning configuration for the second player.
+Наприклад, (0,1,2) та (1,3,3) є програшними конфігураціями, оскільки в результаті ходів першого гравця утворюється виграшна конфігурація для другого гравця.
-Consider all losing configurations ($x_i$,$y_i$,$z_i$) where $x_i ≤ y_i ≤ z_i ≤ 100$. We can verify that $\sum (x_i + y_i + z_i) = 173\\,895$ for these.
+Розглянемо усі програшні конфігурації ($x_i$,$y_i$,$z_i$), де $x_i ≤ y_i ≤ z_i ≤ 100$. Можна довести, що $\sum (x_i + y_i + z_i) = 173\\,895$.
-Find $\sum (x_i + y_i + z_i)$ where ($x_i$,$y_i$,$z_i$) ranges over the losing configurations with $x_i ≤ y_i ≤ z_i ≤ 1000$.
+Знайдіть $\sum (x_i + y_i + z_i)$, де ($x_i$,$y_i$,$z_i$) є діапазоном всіх програшних конфігурацій за умови $x_i ≤ y_i ≤ z_i ≤ 1000$.
# --hints--
diff --git a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-261-pivotal-square-sums.md b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-261-pivotal-square-sums.md
index 6415a8fd063..a04edf42944 100644
--- a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-261-pivotal-square-sums.md
+++ b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-261-pivotal-square-sums.md
@@ -1,6 +1,6 @@
---
id: 5900f4711000cf542c50ff84
-title: 'Problem 261: Pivotal Square Sums'
+title: 'Завдання 261: суми квадратів-опор'
challengeType: 1
forumTopicId: 301910
dashedName: problem-261-pivotal-square-sums
@@ -8,17 +8,17 @@ dashedName: problem-261-pivotal-square-sums
# --description--
-Let us call a positive integer $k$ a square-pivot, if there is a pair of integers $m > 0$ and $n ≥ k$, such that the sum of the ($m + 1$) consecutive squares up to $k$ equals the sum of the $m$ consecutive squares from ($n + 1$) on:
+Назвемо натуральне число $k$ квадратом-опорою, якщо існує пара цілих чисел $m > 0$ та $n ≥ k$, за яких сума ($m + 1$) послідовних квадратів до $k$ дорівнює сумі $m$ послідовних квадратів від ($n + 1$):
$${(k - m)}^2 + \ldots + k^2 = {(n + 1)}^2 + \ldots + {(n + m)}^2$$
-Some small square-pivots are
+Деякі маленькі квадрати-опори:
$$\begin{align} & \mathbf{4}: 3^2 + \mathbf{4}^2 = 5^2 \\\\
& \mathbf{21}: {20}^2 + \mathbf{21}^2 = {29}^2 \\\\ & \mathbf{24}: {21}^2 + {22}^2 + {23}^2 + \mathbf{24}^2 = {25}^2 + {26}^2 + {27}^2 \\\\
& \mathbf{110}: {108}^2 + {109}^2 + \mathbf{110}^2 = {133}^2 + {134}^2 \\\\ \end{align}$$
-Find the sum of all distinct square-pivots $≤ {10}^{10}$.
+Знайдіть суму всіх різних квадратів-опор $≤ {10}^{10}$.
# --hints--
diff --git a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-262-mountain-range.md b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-262-mountain-range.md
index d4a2f844c75..59b27ac93e9 100644
--- a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-262-mountain-range.md
+++ b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-262-mountain-range.md
@@ -1,6 +1,6 @@
---
id: 5900f4731000cf542c50ff85
-title: 'Problem 262: Mountain Range'
+title: 'Завдання 262: гірський хребет'
challengeType: 1
forumTopicId: 301911
dashedName: problem-262-mountain-range
@@ -8,19 +8,19 @@ dashedName: problem-262-mountain-range
# --description--
-The following equation represents the continuous topography of a mountainous region, giving the elevation $h$ at any point ($x$,$y$):
+Наступне рівняння описує безперервну топографію гірського регіону, що утворює висоту $h$ у будь-якій точці ($x$, $y$):
$$h = \left(5000 - \frac{x^2 + y^2 + xy}{200} + \frac{25(x + y)}{2}\right) \times e^{-\left|\frac{x^2 + y^2}{1\\,000\\,000} - \frac{3(x + y)}{2000} + \frac{7}{10}\right|}$$
-A mosquito intends to fly from A(200,200) to B(1400,1400), without leaving the area given by $0 ≤ x$, $y ≤ 1600$.
+Комар хоче летіти з A(200,200) до B(1400,1400), не покидаючи площини, заданої $0 ≤ x$, $y ≤ 1600$.
-Because of the intervening mountains, it first rises straight up to a point A', having elevation $f$. Then, while remaining at the same elevation $f$, it flies around any obstacles until it arrives at a point B' directly above B.
+Деякі гори йому заважають, тому спочатку комар підіймається до точки A' з підняттям $f$. Потім, залишаючись на тому ж піднятті $f$, він облітає будь-які перешкоди, поки не прибуде до точки В' прямо над В.
-First, determine $f_{min}$ which is the minimum constant elevation allowing such a trip from A to B, while remaining in the specified area. Then, find the length of the shortest path between A' and B', while flying at that constant elevation $f_{min}$.
+Спочатку визначте $f_{min}$, що є сталим мінімальним підняттям яке дозволяє переміститись з A до B, залишаючись у визначеній площині. Потім знайдіть довжину найкоротшого шляху від А' до В', пролітаючи на сталому піднятті $f_{min}$.
-Give that length as your answer, rounded to three decimal places.
+У відповіді вкажіть цю довжину, заокруглену до трьох знаків після коми.
-**Note:** For convenience, the elevation function shown above is repeated below, in a form suitable for most programming languages: `h=( 5000-0.005*(x*x+y*y+x*y)+12.5*(x+y) )* exp( -abs(0.000001*(x*x+y*y)-0.0015*(x+y)+0.7) )`.
+**Примітка:** функція підняття, надана вище, записана у форматі, придатному для більшості мов програмування: `h=( 5000-0.005*(x*x+y*y+x*y)+12.5*(x+y) )* exp( -abs(0.000001*(x*x+y*y)-0.0015*(x+y)+0.7) )`.
# --hints--
diff --git a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-263-an-engineers-dream-come-true.md b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-263-an-engineers-dream-come-true.md
index b0138cde0fb..9686c971e57 100644
--- a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-263-an-engineers-dream-come-true.md
+++ b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-263-an-engineers-dream-come-true.md
@@ -1,6 +1,6 @@
---
id: 5900f4741000cf542c50ff86
-title: 'Problem 263: An engineers'' dream come true'
+title: 'Завдання 263: мрія інженера здійснилась'
challengeType: 1
forumTopicId: 301912
dashedName: problem-263-an-engineers-dream-come-true
@@ -8,26 +8,26 @@ dashedName: problem-263-an-engineers-dream-come-true
# --description--
-Розглянемо число 6. The divisors of 6 are: 1,2,3 and 6.
+Розглянемо число 6. Дільниками числа 6 є 1, 2, 3 та 6.
-Every number from 1 up to and including 6 can be written as a sum of distinct divisors of 6:
+Кожне число від 1 до 6 (включно) можна записати як суму різних дільників 6:
$1 = 1$, $2 = 2$, $3 = 1 + 2$, $4 = 1 + 3$, $5 = 2 + 3$, $6 = 6$.
-A number $n$ is called a practical number if every number from 1 up to and including $n$ can be expressed as a sum of distinct divisors of $n$.
+Число $n$ називається практичним числом, якщо кожне число від 1 до $n$ (включно) можна виразити як суму різних дільників $n$.
-A pair of consecutive prime numbers with a difference of six is called a sexy pair (since "sex" is the Latin word for "six"). The first sexy pair is (23, 29).
+Пара послідовних простих чисел з різницею в шість називається сексуальною парою (оскільки «sex» — латинське слово, що означає «шість»). Першою сексуальною парою є (23, 29).
-We may occasionally find a triple-pair, which means three consecutive sexy prime pairs, such that the second member of each pair is the first member of the next pair.
+Іноді можна знайти потрійну пару, тобто три послідовні сексуальні пари простих чисел, де другий член кожної пари є першим членом наступної пари.
-We shall call a number $n$ such that:
+Число $n$, яке задовільняє такі умови:
-- ($n - 9$, $n - 3$), ($n - 3$, $n + 3$), ($n + 3$, $n + 9$) form a triple-pair, and
-- the numbers $n - 8$, $n - 4$, $n$, $n + 4$ and $n + 8$ are all practical,
+- ($n - 9$, $n - 3$), ($n - 3$, $n + 3$), ($n + 3$, $n + 9$) утворюють потрійну пару, і
+- числа $n - 8$, $n - 4$, $n$, $n + 4$ та $n + 8$ є практичними,
-an engineers’ paradise.
+називають мрією інженера.
-Find the sum of the first four engineers’ paradises.
+Знайдіть суму перших чотирьох мрій інженера.
# --hints--
diff --git a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-264-triangle-centres.md b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-264-triangle-centres.md
index 5796048288f..cd40744b08a 100644
--- a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-264-triangle-centres.md
+++ b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-264-triangle-centres.md
@@ -1,6 +1,6 @@
---
id: 5900f4751000cf542c50ff87
-title: 'Problem 264: Triangle Centres'
+title: 'Завдання 264: центри трикутників'
challengeType: 1
forumTopicId: 301913
dashedName: problem-264-triangle-centres
@@ -8,15 +8,15 @@ dashedName: problem-264-triangle-centres
# --description--
-Consider all the triangles having:
+Розглянемо всі трикутники, які задовільняють такі умови:
-- All their vertices on lattice points.
-- Circumcentre at the origin O.
-- Orthocentre at the point H(5, 0).
+- Усі вершини розташовані на точках сітки.
+- Центр описаного кола знаходиться на початку координат O.
+- Центр вписаного кола знаходиться на точці H(5, 0).
-There are nine such triangles having a $\text{perimeter} ≤ 50$.
+Існує дев’ять таких трикутників, які мають $\text{периметр} ≤ 50$.
-Listed and shown in ascending order of their perimeter, they are:
+Ось ці трикутники у порядку зростання за периметром:
-The sum of their perimeters, rounded to four decimal places, is 291.0089.
+Сума їхніх периметрів, округлена до чотирьох знаків після коми, дорівнює 291.0089.
-Find all such triangles with a $\text{perimeter} ≤ {10}^5$. Enter as your answer the sum of their perimeters rounded to four decimal places.
+Знайдіть усі такі трикутники з $\text{периметром} ≤ {10}^5$. У відповіді запишіть суму їхніх периметрів, заокруглену до чотирьох знаків після коми.
# --hints--
diff --git a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-265-binary-circles.md b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-265-binary-circles.md
index 3a0871b8e46..3e908e04fd2 100644
--- a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-265-binary-circles.md
+++ b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-265-binary-circles.md
@@ -1,6 +1,6 @@
---
id: 5900f4761000cf542c50ff88
-title: 'Problem 265: Binary Circles'
+title: 'Завдання 265: двійкові кола'
challengeType: 1
forumTopicId: 301914
dashedName: problem-265-binary-circles
@@ -8,20 +8,20 @@ dashedName: problem-265-binary-circles
# --description--
-$2^N$ binary digits can be placed in a circle so that all the $N$-digit clockwise subsequences are distinct.
+$2^N$ двійкові цифри можна розмістити в колі так, щоб всі $N$-значні підпослідовності за годинниковою стрілкою відрізнялись.
-For $N = 3$, two such circular arrangements are possible, ignoring rotations:
+За умови $N = 3$ можливі два таких кругових розміщення, ігноруючи обертання:
-
+
-For the first arrangement, the 3-digit subsequences, in clockwise order, are: 000, 001, 010, 101, 011, 111, 110 and 100.
+Тризначними підпослідовностями за годинниковою стрілкою для першого розміщення є: 000, 001, 010, 101, 011, 111, 110 та 100.
-Each circular arrangement can be encoded as a number by concatenating the binary digits starting with the subsequence of all zeros as the most significant bits and proceeding clockwise. The two arrangements for $N = 3$ are thus represented as 23 and 29:
+Кожне кругове розміщення може бути зашифроване як число, об’єднавши всі двійкові цифри, починаючи з підпослідовності нулів як найбільш значущих бітів і продовжуючи за годинниковою стрілкою. Таким чином, два варіанти розміщення за умови $N = 3$ представлені як 23 та 29:
$${00010111}_2 = 23\\\\
{00011101}_2 = 29$$
-Calling $S(N)$ the sum of the unique numeric representations, we can see that $S(3) = 23 + 29 = 52$.
+Називаючи $S(N)$ сумою унікальних числових представлень, ми можемо побачити, що $S(3) = 23 + 29 = 52$.
Знайдіть $S(5)$.
diff --git a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-266-pseudo-square-root.md b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-266-pseudo-square-root.md
index 5cd8f12a105..6b5c30ce3c2 100644
--- a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-266-pseudo-square-root.md
+++ b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-266-pseudo-square-root.md
@@ -1,6 +1,6 @@
---
id: 5900f4771000cf542c50ff89
-title: 'Problem 266: Pseudo Square Root'
+title: 'Завдання 266: псевдоквадратні корені'
challengeType: 1
forumTopicId: 301915
dashedName: problem-266-pseudo-square-root
@@ -8,15 +8,15 @@ dashedName: problem-266-pseudo-square-root
# --description--
-The divisors of 12 are: 1,2,3,4,6 and 12.
+Дільниками числа 12 є 1, 2, 3, 4, 6 та 12.
-The largest divisor of 12 that does not exceed the square root of 12 is 3.
+Найбільшим дільником 12, який не перевищує квадратний корінь з 12, є 3.
-We shall call the largest divisor of an integer $n$ that does not exceed the square root of $n$ the pseudo square root ($PSR$) of $n$.
+Назвемо найбільший дільник цілого числа $n$, який не перевищує квадратний корінь з $n$, псевдоквадратним коренем ($PSR$) числа $n$.
-It can be seen that $PSR(3102) = 47$.
+Можна побачити, що $PSR(3102) = 47$.
-Let $p$ be the product of the primes below 190. Знайдіть $PSR(p)\bmod {10}^{16}$.
+Нехай $p$ буде добутком простих чисел, менших за 190. Знайдіть $PSR(p)\bmod {10}^{16}$.
# --hints--
diff --git a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-267-billionaire.md b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-267-billionaire.md
index 10ed67ea296..c3b351d4723 100644
--- a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-267-billionaire.md
+++ b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-267-billionaire.md
@@ -1,6 +1,6 @@
---
id: 5900f4771000cf542c50ff8a
-title: 'Problem 267: Billionaire'
+title: 'Завдання 267: мільярдер'
challengeType: 1
forumTopicId: 301916
dashedName: problem-267-billionaire
@@ -8,17 +8,17 @@ dashedName: problem-267-billionaire
# --description--
-You are given a unique investment opportunity.
+Ви отримали унікальну можливість для інвестування.
-Starting with £1 of capital, you can choose a fixed proportion, $f$, of your capital to bet on a fair coin toss repeatedly for 1000 tosses.
+Починаючи з капіталу в £1, ви можете вибрати фіксовану частку $f$, щоб поставити на чесне підкидання монетою 1000 разів.
-Your return is double your bet for heads and you lose your bet for tails.
+Якщо випаде орел — ви отримаєте подвійну ставку, якщо решка — втратите ставку.
-For example, if $f = \frac{1}{4}$, for the first toss you bet £0.25, and if heads comes up you win £0.5 and so then have £1.5. You then bet £0.375 and if the second toss is tails, you have £1.125.
+Наприклад, якщо $f = \frac{1}{4}$, на перше підкидання ви ставите £0.25, і якщо випаде орел, ви виграєте £0.5 та матимете £1.5. Потім ви ставите £0.375, і якщо на друге підкидання випаде решка, то матимете £1.125.
-Choosing $f$ to maximize your chances of having at least £1,000,000,000 after 1,000 flips, what is the chance that you become a billionaire?
+Який шанс стати мільярдером, обравши $f$ з метою максимізувати свої шанси отримати принаймні £1,000,000,000 після 1000 підкидань?
-All computations are assumed to be exact (no rounding), but give your answer rounded to 12 digits behind the decimal point in the form 0.abcdefghijkl.
+Всі обчислення вважаються точними (не округлюються). Однак дайте відповідь, заокруглену до 12 знаків після коми у вигляді 0.abcdefghijkl.
# --hints--
diff --git a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-268-counting-numbers-with-at-least-four-distinct-prime-factors-less-than-100.md b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-268-counting-numbers-with-at-least-four-distinct-prime-factors-less-than-100.md
index 7a92fdd65c5..175a1e10a11 100644
--- a/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-268-counting-numbers-with-at-least-four-distinct-prime-factors-less-than-100.md
+++ b/curriculum/challenges/ukrainian/18-project-euler/project-euler-problems-201-to-300/problem-268-counting-numbers-with-at-least-four-distinct-prime-factors-less-than-100.md
@@ -1,7 +1,7 @@
---
id: 5900f4791000cf542c50ff8b
title: >-
- Problem 268: Counting numbers with at least four distinct prime factors less than 100
+ Завдання 268: підрахунок чисел з принаймні чотирма різними простими множниками меншими за 100
challengeType: 1
forumTopicId: 301917
dashedName: >-
@@ -10,9 +10,9 @@ dashedName: >-
# --description--
-It can be verified that there are 23 positive integers less than 1000 that are divisible by at least four distinct primes less than 100.
+Можна довести, що існує 23 натуральних числа менших за 1000, які діляться на принаймні чотири простих числа менших за 100 без остачі.
-Find how many positive integers less than ${10}^{16}$ are divisible by at least four distinct primes less than 100.
+Знайдіть кількість натуральних чисел менших за ${10}^{16}$, що діляться на принаймні чотири простих числа менших за 100 без остачі.
# --hints--
diff --git a/curriculum/challenges/ukrainian/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md b/curriculum/challenges/ukrainian/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
index c1fdfb0fb27..702447835ab 100644
--- a/curriculum/challenges/ukrainian/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
+++ b/curriculum/challenges/ukrainian/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md
@@ -13,6 +13,12 @@ PYTHON
# --hints--
+The source code should include `one = 2`
+
+```js
+assert(code.match(/one\s*=\s*2/))
+```
+
Змінна `hello` має дорівнювати "world".
```js
@@ -27,12 +33,6 @@ PYTHON
--fcc-editable-region--
one = 1
hello = "goodbye"
-def a_function():
- local_thing = "world"
- print(local_thing)
-
-a_function()
-
print(hello)
--fcc-editable-region--
```
@@ -40,7 +40,7 @@ print(hello)
# --solutions--
```py
-one = 1
+one = 2
hello = "world"
print(hello)
```
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
new file mode 100644
index 00000000000..a8abd3ff027
--- /dev/null
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-1.md
@@ -0,0 +1,93 @@
+---
+id: 651dd5ae6ffb500e3f2ce47c
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+```js
+console.log('with code');
+```
+
+***
+
+Making a statement based on her assumption.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Expressing a possibility.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+***
+
+Giving a job description.
+
+### --feedback--
+
+No, that's not correct
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
new file mode 100644
index 00000000000..27f5dcb5e42
--- /dev/null
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5d86ffb500e3f2ce47d
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
new file mode 100644
index 00000000000..a79f83d6f5a
--- /dev/null
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-conversation-starters-in-the-break-room/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd5f41d697d0aab7833b5
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
new file mode 100644
index 00000000000..13028d7c28a
--- /dev/null
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/dialogue-introducing.md
@@ -0,0 +1,15 @@
+---
+id: 651dd3e06ffb500e3f2ce478
+title: "Dialogue: Introducing"
+challengeType: 21
+videoId: nLDychdBwUg
+dashedName: dialogue-introducing
+---
+
+# --description--
+
+What the video above to understand the context of the upcoming lessons.
+
+# --assignment--
+
+Watch the video
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
new file mode 100644
index 00000000000..3d67f522c07
--- /dev/null
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/i-am-im.md
@@ -0,0 +1,49 @@
+---
+id: 6543abeff5f028dba112f278
+title: "I am: I'm"
+challengeType: 19
+dashedName: i-am-im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, the verb `to be` is used to talk about identities, characteristics, and more. The contraction `I'm` is a combination of `I` and `am`. Here, Tom uses it to introduce himself.
+
+# --question--
+
+## --text--
+
+Which operation correctly expands the contraction `I'm`?
+
+## --answers--
+
+`I is`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I am`
+
+***
+
+`I was`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+***
+
+`I have`
+
+### --feedback--
+
+Think about which verb form would correctly fit with `I` to talk about oneself in the present.
+
+## --video-solution--
+
+2
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
new file mode 100644
index 00000000000..a2aa6a8f717
--- /dev/null
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/im.md
@@ -0,0 +1,21 @@
+---
+id: 6543abf5f5f028dba112f279
+title: I'm
+challengeType: 22
+dashedName: im
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+The word `I'm` is a contraction of `I am`. Contractions are a way to shorten common combinations of words, especially with verbs.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, that's right! _ Tom McKenzie.`
+
+## --blanks--
+
+`I'm`
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
new file mode 100644
index 00000000000..3b8b7cff0bd
--- /dev/null
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/name-and-job-title.md
@@ -0,0 +1,53 @@
+---
+id: 6537e6ece93e5724eeb27c54
+title: Name and Job Title
+challengeType: 19
+dashedName: name-and-job-title
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, we often mention our job or role in a company by saying, `I'm [Name], the [Job title].` This lets others know our position or role.
+
+# --question--
+
+## --text--
+
+What is Maria's job role at the company?
+
+## --answers--
+
+`Graphic Designer`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Member`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`Team Lead`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+`CEO`
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
new file mode 100644
index 00000000000..2a3c405b6ad
--- /dev/null
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/right.md
@@ -0,0 +1,33 @@
+---
+id: 651dd5386ffb500e3f2ce47a
+title: Right
+challengeType: 22
+dashedName: right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, to check or confirm something people sometimes use tag questions. For example, `You are a programmer, right?` Here, `right?` is used as a tag to check or confirm the previous statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, _?`
+
+## --blanks--
+
+`are`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
+
+***
+
+`right`
+
+### --feedback--
+
+Pay attention to the verb in the sentence.
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
new file mode 100644
index 00000000000..2ae09721cbf
--- /dev/null
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/team-lead.md
@@ -0,0 +1,33 @@
+---
+id: 6543aa3df5f028dba112f275
+title: Team Lead
+challengeType: 22
+dashedName: team-lead
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+A `team lead` is a person who leads or manages a team. In the dialogue, Maria introduces herself as the team lead, meaning she has a leadership role.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`I'm Maria, the _ _.`
+
+## --blanks--
+
+team
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
+
+***
+
+lead
+
+### --feedback--
+
+Focus on the term Maria used to describe herself.
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
new file mode 100644
index 00000000000..3349bcfead9
--- /dev/null
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right-2.md
@@ -0,0 +1,25 @@
+---
+id: 6543aae6f5f028dba112f277
+title: "That's Right: 2"
+challengeType: 22
+dashedName: thats-right-2
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+Placeholder Description \_\_\_ \_\_
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hi, _ _! I'm Tom McKenzie. It's a pleasure to meet you.`
+
+## --blanks--
+
+`that's`
+
+***
+
+`right`
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
new file mode 100644
index 00000000000..e85982fd561
--- /dev/null
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/thats-right.md
@@ -0,0 +1,49 @@
+---
+id: 6543aaa9f5f028dba112f276
+title: That's Right
+challengeType: 19
+dashedName: thats-right
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+When someone makes a correct assumption or guess about you, you can confirm it using phrases like `that's right`. It's a way of agreeing or saying yes to what is said.
+
+# --question--
+
+## --text--
+
+Which phrase does Tom use to confirm Maria's statement about him?
+
+## --answers--
+
+`that's wrong`
+
+### --feedback--
+
+`That's wrong` is used to disagree.
+
+***
+
+`that's okay`
+
+### --feedback--
+
+`that's okay` usually shows acceptance, not confirmation.
+
+***
+
+`that's right`
+
+***
+
+`that's left`
+
+### --feedback--
+
+`that's left` refers to a direction, not confirmation.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
new file mode 100644
index 00000000000..dd254987129
--- /dev/null
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-greetings-in-your-first-day-at-the-office/you-are.md
@@ -0,0 +1,27 @@
+---
+id: 651dd5296ffb500e3f2ce479
+title: You Are
+challengeType: 22
+dashedName: you-are
+audioPath: curriculum/js-music-player/We-Are-Going-to-Make-it.mp3
+---
+
+# --description--
+
+In English, when making introductions or identifying someone, you use the verb `to be`. In this case, `You are` is used to address the person Maria is talking to and affirmatively identify their occupation.
+
+Maria is introducing herself and confirming Tom's job role. `Are` is used in the present affirmative to make a statement.
+
+# --fillInTheBlank--
+
+## --sentence--
+
+`Hello, You _ the new graphic designer, right?`
+
+## --blanks--
+
+are
+
+### --feedback--
+
+The verb `to be` is an irregular verb. When conjugated with the pronoun `you`, `be` becomes `are`. For example: `You are an English learner.`
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
new file mode 100644
index 00000000000..7aa1e30008d
--- /dev/null
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-1.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5a46ffb500e3f2ce47b
+title: Challenge 1
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-1
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria doing when she says, `"You must be the new graphic designer"`?
+
+## --answers--
+
+Asking about someone's job role.
+
+***
+
+Giving a job description.
+
+***
+
+Making a statement based on her assumption.
+
+***
+
+Expressing a possibility.
+
+## --video-solution--
+
+3
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
new file mode 100644
index 00000000000..2ee50fe5647
--- /dev/null
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-2.md
@@ -0,0 +1,41 @@
+---
+id: 651dd5e46ffb500e3f2ce47e
+title: Challenge 2
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-2
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4
diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
new file mode 100644
index 00000000000..adc4b41f091
--- /dev/null
+++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-introductions-in-an-online-team-meeting/challenge-3.md
@@ -0,0 +1,44 @@
+---
+id: 651dd6071d697d0aab7833b6
+title: Challenge 3
+challengeType: 11
+videoId: nLDychdBwUg
+dashedName: challenge-3
+---
+
+# --description--
+
+Here's the description
+
+# --instructions--
+
+Here's the instructions
+Fill in the blank.
+
+Hello! You \_\_\_\_ \_\_ the new graphic designer. I'm Maria, the team lead.
+
+# --question--
+
+## --text--
+
+What is Maria assuming about Tom?
+
+## --answers--
+
+Tom is the team lead.
+
+***
+
+Maria is the new graphic designer.
+
+***
+
+Tom is leaving the company.
+
+***
+
+Tom is the new graphic designer.
+
+## --video-solution--
+
+4