Skip to content

Commit f30781c

Browse files
Merge pull request #735 from freeCodeCamp/main
Create a new pull request by comparing changes across two branches
2 parents 9f675b0 + 7d32245 commit f30781c

File tree

202 files changed

+1819
-980
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

202 files changed

+1819
-980
lines changed

.github/workflows/curriculum-i18n-submodule.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
3434
submodules: 'recursive'
3535

3636
- name: Use Node.js ${{ matrix.node-version }}
37-
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6
37+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
3838
with:
3939
node-version: ${{ matrix.node-version }}
4040

.github/workflows/deploy-client.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ jobs:
176176
submodules: 'recursive'
177177

178178
- name: Use Node.js ${{ matrix.node-version }}
179-
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6
179+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
180180
with:
181181
node-version: ${{ matrix.node-version }}
182182

.github/workflows/docker-ghcr.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
2727

2828
- name: Set up Docker Buildx
29-
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3
29+
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
3030

3131
- name: Log in to the GHCR
3232
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3

.github/workflows/e2e-playwright.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
submodules: 'recursive'
3131

3232
- name: Use Node.js ${{ matrix.node-version }}
33-
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6
33+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
3434
with:
3535
node-version: ${{ matrix.node-version }}
3636

@@ -132,7 +132,7 @@ jobs:
132132
rm api-artifact/api-artifact.tar
133133
134134
- name: Use Node.js ${{ matrix.node-version }}
135-
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6
135+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
136136
with:
137137
node-version: ${{ matrix.node-version }}
138138

.github/workflows/e2e-third-party.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
3434

3535
- name: Use Node.js ${{ matrix.node-version }}
36-
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
36+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
3737
with:
3838
node-version: ${{ matrix.node-version }}
3939

@@ -118,7 +118,7 @@ jobs:
118118
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
119119

120120
- name: Use Node.js ${{ matrix.node-version }}
121-
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
121+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
122122
with:
123123
node-version: ${{ matrix.node-version }}
124124

.github/workflows/i18n-validate-builds.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
submodules: 'recursive'
2424

2525
- name: Use Node.js ${{ matrix.node-version }}
26-
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6
26+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
2727
with:
2828
node-version: ${{ matrix.node-version }}
2929

.github/workflows/i18n-validate-prs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
submodules: 'recursive'
2626

2727
- name: Use Node.js ${{ matrix.node-version }}
28-
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6
28+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
2929
with:
3030
node-version: ${{ matrix.node-version }}
3131

.github/workflows/node.js-tests.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
fi
4242
4343
- name: Use Node.js ${{ matrix.node-version }}
44-
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6
44+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
4545
with:
4646
node-version: ${{ matrix.node-version }}
4747

@@ -87,7 +87,7 @@ jobs:
8787
submodules: 'recursive'
8888

8989
- name: Use Node.js ${{ matrix.node-version }}
90-
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6
90+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
9191
with:
9292
node-version: ${{ matrix.node-version }}
9393

@@ -123,7 +123,7 @@ jobs:
123123
submodules: 'recursive'
124124

125125
- name: Use Node.js ${{ matrix.node-version }}
126-
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6
126+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
127127
with:
128128
node-version: ${{ matrix.node-version }}
129129

@@ -169,7 +169,7 @@ jobs:
169169
submodules: 'recursive'
170170

171171
- name: Use Node.js ${{ matrix.node-version }}
172-
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6
172+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
173173
with:
174174
node-version: ${{ matrix.node-version }}
175175

@@ -218,7 +218,7 @@ jobs:
218218
submodules: 'recursive'
219219

220220
- name: Use Node.js ${{ matrix.node-version }}
221-
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6
221+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
222222
with:
223223
node-version: ${{ matrix.node-version }}
224224

client/i18n/locales/english/intro.json

Lines changed: 46 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1846,7 +1846,6 @@
18461846
"git": "Git",
18471847
"review-relational-databases": "Relational Databases Review",
18481848
"exam-relational-databases": "Relational Databases Exam",
1849-
18501849
"nodejs-core-libraries": "Node.js Core Libraries",
18511850
"node-package-manager": "Node Package Manager",
18521851
"http-and-the-web-standards-model": "HTTP and the Web Standards Model",
@@ -6670,53 +6669,39 @@
66706669
"review-python": "Python Review",
66716670
"python-certification-exam": "Python Certification Exam"
66726671
},
6673-
"module-intros": {
6674-
"python-classes-and-objects": {
6675-
"note": "Coming Winter 2025",
6676-
"intro": [
6677-
"In this module, you will learn how to work with classes, methods, attributes and properties. Then, you will build out workshops and labs to practice these concepts and take a short quiz to test your knowledge."
6678-
]
6679-
},
6680-
"python-object-oriented-programming": {
6681-
"note": "Coming Winter 2025",
6672+
"blocks": {
6673+
"lecture-introduction-to-python": {
6674+
"title": "Introduction to Python",
66826675
"intro": [
6683-
"In this module, you will learn about Object-oriented programming concepts like encapsulation, inheritance, polymorphism, and more. You will build out workshops and labs to practice these concepts and take a short quiz to test your knowledge."
6676+
"In these lessons, you will learn what Python is, how to set up your development environment."
66846677
]
66856678
},
6686-
"python-linear-data-structures": {
6687-
"note": "Coming Winter 2025",
6679+
"lecture-understanding-variables-and-data-types": {
6680+
"title": "Understanding Variables and Data Types",
66886681
"intro": [
6689-
"In this module, you will learn about data structures including stacks, queues, linked lists, and more. You will build out a workshop and lab to practice these concepts and take a short quiz to test your knowledge."
6682+
"In these lessons, you will learn about variables and data types in Python."
66906683
]
66916684
},
6692-
"python-algorithms": {
6693-
"note": "Coming Winter 2025",
6694-
"intro": [
6695-
"In this module, you will learn about common algorithms including binary search, merge sort, selection sort, and more. You will build workshops and labs to practice these concepts and take a short quiz to test your knowledge."
6696-
]
6685+
"lecture-introduction-to-python-strings": {
6686+
"title": "Introduction to Strings",
6687+
"intro": ["In these lessons, you will learn about strings in Python."]
66976688
},
6698-
"python-graphs-and-trees": {
6699-
"note": "Coming Winter 2025",
6689+
"lecture-numbers-and-mathematical-operations": {
6690+
"title": "Numbers and Mathematical Operations",
67006691
"intro": [
6701-
"In this module, you will learn about graphs in computer science as well as adjacency lists, trees, tries, and more. You will build workshops and labs to practice these concepts and take a short quiz to test your knowledge."
6692+
"In these lessons, you will learn about numbers and mathematical operations in Python."
67026693
]
67036694
},
6704-
"python-dynamic-programming": {
6705-
"note": "Coming Winter 2025",
6695+
"lecture-booleans-and-conditionals": {
6696+
"title": "Booleans and Conditionals",
67066697
"intro": [
6707-
"In this module, you will learn about dynamic programming and practice these concepts by building a fibonacci sequence lab. Then you will take a short quiz to test your knowledge."
6698+
"In these lessons, you will learn about booleans and conditionals in Python."
67086699
]
67096700
},
6710-
"python-certification-exam": {
6711-
"note": "Coming Winter 2025",
6712-
"intro": ["Pass this exam to earn your Python Certification."]
6713-
}
6714-
},
6715-
"blocks": {
6716-
"lecture-introduction-to-python": {
6717-
"title": "Introduction to Python",
6701+
"lecture-understanding-functions-and-scope": {
6702+
"title": "Understanding Functions and Scope",
67186703
"intro": [
6719-
"In these lessons, you will learn the fundamentals of Python. You'll learn about variables, data types, operators, control flow, functions, and more."
6704+
"In these lessons, you will learn about functions and scope in Python."
67206705
]
67216706
},
67226707
"workshop-caesar-cipher": {
@@ -6726,7 +6711,7 @@
67266711
]
67276712
},
67286713
"lab-rpg-character": {
6729-
"title": "Build an RPG character",
6714+
"title": "Build an RPG Character",
67306715
"intro": [
67316716
"In this lab you will practice basic python by building an RPG character."
67326717
]
@@ -7141,14 +7126,6 @@
71417126
"lab-number-guessing-game": "Build a Number Guessing Game",
71427127
"relational-databases-certification-exam": "Relational Databases Certification Exam"
71437128
},
7144-
"module-intros": {
7145-
"relational-databases-certification-exam": {
7146-
"note": "Coming Winter 2025",
7147-
"intro": [
7148-
"Pass this exam to earn your Relational Databases Certification."
7149-
]
7150-
}
7151-
},
71527129
"blocks": {
71537130
"lecture-working-with-code-editors-and-ides": {
71547131
"title": "Working with Code Editors and IDEs",
@@ -8410,6 +8387,13 @@
84108387
"In this workshop, you'll use Flexbox to build a responsive photo gallery webpage."
84118388
]
84128389
},
8390+
"lab-pricing-plans-layout": {
8391+
"title": "Design a Pricing Plans Layout Page",
8392+
"intro": [
8393+
"In this lab, you'll use flexbox to create a common three-card tier layout.",
8394+
"You'll practice aligning elements using flexbox properties like <code>flex</code>, <code>flex-grow</code>, <code>order</code>, and more."
8395+
]
8396+
},
84138397
"lab-page-of-playing-cards": {
84148398
"title": "Build a Page of Playing Cards",
84158399
"intro": [
@@ -8783,46 +8767,38 @@
87838767
"zh-a1-module-discussing-team-skills": "Discussing Team Skills"
87848768
},
87858769
"module-intros": {
8786-
"zh-a1-module-introduction-and-certification-overview": {
8787-
"note": "Coming Winter 2025",
8788-
"intro": ["PLACEHOLDER: Write the module intro here."]
8789-
},
8790-
"zh-a1-module-initials-and-finals": {
8791-
"note": "Coming Winter 2025",
8792-
"intro": ["PLACEHOLDER: Write the module intro here."]
8793-
},
8794-
"zh-a1-module-greetings-and-basic-introductions": {
8795-
"note": "Coming Winter 2025",
8796-
"intro": ["PLACEHOLDER: Write the module intro here."]
8797-
},
8798-
"zh-a1-module-asking-and-giving-basic-information": {
8799-
"note": "Coming Winter 2025",
8800-
"intro": ["PLACEHOLDER: Write the module intro here."]
8801-
},
88028770
"zh-a1-module-introducing-others": {
8803-
"note": "Coming Winter 2025",
8804-
"intro": ["PLACEHOLDER: Write the module intro here."]
8771+
"note": "Coming 2026",
8772+
"intro": [
8773+
"In this module, you will practice understanding short monologues that introduce information about other people, such as name, role, nationality, and age."
8774+
]
88058775
},
88068776
"zh-a1-module-getting-to-know-the-team": {
8807-
"note": "Coming Winter 2025",
8808-
"intro": ["PLACEHOLDER: Write the module intro here."]
8777+
"note": "Coming 2026",
8778+
"intro": [
8779+
"In this module, you will practice understanding a short conversation that asks and answers simple questions about colleagues."
8780+
]
88098781
},
88108782
"zh-a1-module-talking-about-personal-skills": {
8811-
"note": "Coming Winter 2025",
8812-
"intro": ["PLACEHOLDER: Write the module intro here."]
8783+
"note": "Coming 2026",
8784+
"intro": [
8785+
"In this module, you will practice understanding short monologues about what people can and cannot do, such as languages and work skills."
8786+
]
88138787
},
88148788
"zh-a1-module-discussing-team-skills": {
8815-
"note": "Coming Winter 2025",
8816-
"intro": ["PLACEHOLDER: Write the module intro here."]
8789+
"note": "Coming 2026",
8790+
"intro": [
8791+
"In this module, you will practice understanding a short conversation about who can do which tasks on a team and how a project starts."
8792+
]
88178793
}
88188794
},
88198795
"blocks": {
88208796
"zh-a1-learn-certification-introduction": {
88218797
"title": "Certification Introduction",
88228798
"intro": ["", ""]
88238799
},
8824-
"zh-a1-learn-single-finals": {
8825-
"title": "Single Finals",
8800+
"zh-a1-learn-simple-finals": {
8801+
"title": "Simple Finals",
88268802
"intro": ["", ""]
88278803
},
88288804
"zh-a1-learn-initials": { "title": "Initials", "intro": ["", ""] },
@@ -8963,10 +8939,7 @@
89638939
"title": "Special Spelling Rules",
89648940
"intro": ["", ""]
89658941
},
8966-
"zh-a1-practice-pinyin": {
8967-
"title": "Pinyin Practice",
8968-
"intro": ["", ""]
8969-
}
8942+
"zh-a1-practice-pinyin": { "title": "Pinyin Practice", "intro": ["", ""] }
89708943
}
89718944
},
89728945
"basic-html": {

client/i18n/locales/english/translations.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@
208208
"core-certs-heading": "Recommended curriculum (still in beta):",
209209
"learn-english-heading": "Learn English for Developers:",
210210
"learn-spanish-heading": "Learn Professional Spanish:",
211+
"learn-chinese-heading": "Learn Professional Chinese:",
211212
"professional-certs-heading": "Professional certifications:",
212213
"interview-prep-heading": "Prepare for the developer interview job search:",
213214
"legacy-curriculum-heading": "Our archived coursework:",
@@ -1115,6 +1116,7 @@
11151116
"issued": "Issued",
11161117
"fulltext": "<0>This certifies that</0> <1>{{user}}</1> <2>successfully completed the</2> <3>{{title}}</3> <4>Developer Certification on {{time}}</4> <5>representing approximately {{completionTime}} hours of work</5>",
11171118
"fulltextNoHours": "<0>This certifies that</0> <1>{{user}}</1> <2>successfully completed the</2> <3>{{title}}</3> <4>Developer Certification on {{time}}</4>",
1119+
"fulltextLanguageExam": "<0>This certifies that</0> <1>{{user}}</1> <2>has successfully passed the</2> <3>{{title}}</3> <4>exam on {{time}}</4> <5>demonstrating competence in grammar, listening, and reading portions of the CEFR standards for this level based on the content covered in the curriculum.</5>",
11181120
"quincy-larson-signature": "Quincy Larson's Signature",
11191121
"julia-liuson-signature": "Julia Liuson's Signature",
11201122
"project": {

0 commit comments

Comments
 (0)