Skip to content

Pr63692 main #1

Open
wants to merge 21 commits into
base: pr63692-bug
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
7616926
refactor(e2e): consolidate tests in preview.spec.ts (#63652)
Nov 10, 2025
3549056
chore(i18n,client): processed translations (#63693)
Nov 10, 2025
e8a145b
feat(curriculum): Add Chinese audios from the CDN (#63682)
Nov 10, 2025
2bbb66a
chore(i18n,learn): update i18n-curriculum submodule (#63695)
Nov 10, 2025
13ec0d5
fix(curriculum): clarify performance.now() precision and update quiz …
Nov 10, 2025
14dd3c6
chore(curriculum): update v9 content (#63650)
Nov 10, 2025
0c844ab
feat(client,challenge-parser): render Chinese as ruby markup (#63424)
Nov 10, 2025
69eb4e4
fix(curriculum): guide users to enable the interactive editor (#63328)
Nov 10, 2025
c56a944
fix(curriculum): allow multiple trailing spaces in factorial calculat…
Nov 10, 2025
c722fcd
fix(curriculum): update tests for step 41 of cat photo app workshop (…
Nov 10, 2025
6fe97d3
feat: release a2-english exam (#63136)
Nov 11, 2025
ee911d7
refactor: simplify sourcing of challenge nodes into gatsby (#63697)
Nov 11, 2025
8b4fba6
fix(curriculum): capitalize 'You' in Step 3 hint (#63725)
Nov 11, 2025
bbfcf91
fix(curriculum): removes duplicated "title" in UTF lesson (#63731)
Nov 11, 2025
666108c
fix(curriculum): Update good structural hierarchy lesson (#63706)
Nov 11, 2025
ff881ee
feat: add interactive examples for e.preventDefault lesson (#63733)
Nov 11, 2025
2ac117f
fix: add code examples to semantic HTML review page (#63723)
Nov 11, 2025
52a942f
fix(client): same font size for equivalent superblock headers (#63722)
Nov 11, 2025
92bafa4
fix(client): improve FormFields type safety and accessibility (#62849)
Nov 11, 2025
e9e5347
fix(client): remove unused test label in components preview (#63745)
Nov 11, 2025
25b1397
fix(curriculum): improve step 3 description and add example in build-…
Nov 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion api/src/routes/protected/certificate.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ describe('certificate routes', () => {
data: {
completedChallenges: [],
name: 'fcc',
isA2EnglishCert: false,
isRespWebDesignCert: false,
isJsAlgoDataStructCert: false,
isFrontEndLibsCert: false,
Expand Down Expand Up @@ -135,6 +136,7 @@ describe('certificate routes', () => {
},
isCertMap: {
is2018DataVisCert: false,
isA2EnglishCert: false,
isApisMicroservicesCert: false,
isBackEndCert: false,
isCollegeAlgebraPyCertV8: false,
Expand Down Expand Up @@ -238,7 +240,8 @@ describe('certificate routes', () => {
isInfosecCertV7: true,
isMachineLearningPyCertV7: true,
isCollegeAlgebraPyCertV8: true,
isFoundationalCSharpCertV8: true
isFoundationalCSharpCertV8: true,
isA2EnglishCert: true
}
});

Expand Down
2 changes: 0 additions & 2 deletions client/gatsby-node.js
Original file line number Diff line number Diff line change
Expand Up @@ -470,8 +470,6 @@ exports.createSchemaCustomization = ({ actions }) => {
}
type ChallengeFields {
slug: String
blockName: String
tests: [Test]
}
type Nodule {
type: String
Expand Down
71 changes: 52 additions & 19 deletions client/i18n/locales/chinese-traditional/intro.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
}
},
"2022/responsive-web-design": {
"title": "響應式網頁設計",
"title": "Legacy Responsive Web Design V8",
"intro": [
"在響應式網頁設計的認證課程中,你將學習用於構建網頁的語言: HTML(超文本標記語言)用於創建內容,CSS(級聯樣式表)用於樣式設計。",
"首先,你將通過創建一個展示貓咪圖片的應用學習 HTML 和 CSS 的基本知識。 然後,通過創建一隻企鵝來學習像 CSS 變量這樣的現代技術,並通過創建網頁表單學習無障礙的最佳實踐。",
Expand Down Expand Up @@ -217,7 +217,7 @@
}
},
"javascript-algorithms-and-data-structures": {
"title": "(舊版)JavaScript 算法和數據結構",
"title": "Legacy JavaScript Algorithms and Data Structures V7",
"intro": [
"HTML 和 CSS 控制頁面的內容和樣式,JavaScript 則用於頁面交互。在 JavaScript 算法和數據結構認證中,你將學習 JavaScript 的基礎知識,包括變量、 數組、 對象、 循環和函數。",
"打好基礎之後,你將會通過創建算法來操作字符串、進行階乘運算甚至計算國際空間站的軌道來應用這些知識。",
Expand Down Expand Up @@ -300,7 +300,7 @@
}
},
"javascript-algorithms-and-data-structures-v8": {
"title": "JavaScript Algorithms and Data Structures",
"title": "Legacy JavaScript Algorithms and Data Structures V8",
"intro": [
"開發者使用 HTML 和 CSS 來控制頁面的內容與樣式。他們還使用 JavaScript 來讓頁面可以交互。",
"在這個 JavaScript 算法與數據結構認證中,你將學習如變量、數組、對象、循環、函數、DOM 等 JavaScript 的基礎知識。",
Expand Down Expand Up @@ -490,7 +490,7 @@
}
},
"front-end-development-libraries": {
"title": "前端開發庫",
"title": "Front End Development Libraries V8",
"intro": [
"你已經熟悉了 HTML、CSS 和 JavaScript。現在學習行業中一些流行的前端庫來提升你的技能吧。",
"在前端開發庫認證中,你將學習如何使用 Bootstrap 快速設置網站樣式,以及如何在 CSS 樣式中添加邏輯,並使用 Sass 對其進行擴展。",
Expand Down Expand Up @@ -553,7 +553,7 @@
}
},
"data-visualization": {
"title": "數據可視化",
"title": "Data Visualization V8",
"intro": [
"數據無處不在。但是,如果沒有上下文,數據就沒有多大意義。",
"在數據可視化認證中,你會用 D3.js 庫來創建表格、圖表和地圖,以展示不同的數據。",
Expand Down Expand Up @@ -588,7 +588,7 @@
}
},
"relational-database": {
"title": "關係數據庫",
"title": "Relational Database V8",
"intro": [
"對於這些課程,你將使用真正的開發人員工具和軟件,包括 VS Code、PostgreSQL 和 Linux/Unix 命令行來完成交互式教程和構建項目。",
"這些課程從基本的 Bash 命令開始。使用終端,你將學習從導航和操作文件系統、在 Bash 中編寫腳本到高級用法的所有內容。",
Expand Down Expand Up @@ -696,7 +696,7 @@
}
},
"back-end-development-and-apis": {
"title": "後端開發和 APIs",
"title": "Back End Development and APIs V8",
"intro": [
"在這之前,你只是在前端使用 JavaScript 來給頁面添加交互、解決算法挑戰,或構建一個 SPA(單頁應用程序)。但 JavaScript 也可以用於後端或者服務器來構建整個 web 應用程序。",
"今天,構建應用軟件的廣受歡迎的方法之一是微服務,這些微服務是一種小型模塊化的應用,能夠共同形成一個更大的整體。",
Expand Down Expand Up @@ -2073,6 +2073,12 @@
"In these lessons, you will learn about HTML fundamentals like the <code>div</code> element, the <code>id</code> and <code>class</code> attributes, the HTML boilerplate, HTML entities, and more."
]
},
"workshop-bookstore-page": {
"title": "Build a Bookstore Page",
"intro": [
"In this workshop, you will practice working with classes, ids and the <code>div</code> element by building a bookstore page."
]
},
"lecture-understanding-how-html-affects-seo": {
"title": "Understanding How HTML Affects SEO",
"intro": [
Expand Down Expand Up @@ -4677,7 +4683,6 @@
"workshop-discount-calculator": {
"title": "Build a Discount Calculator",
"intro": [
"Build a Discount Calculator",
"In this workshop you will build a flexible discount pricing calculator through abstract base classes, allowing multiple discount algorithms to be applied interchangeably without modifying the core logic."
]
},
Expand Down Expand Up @@ -4801,8 +4806,10 @@
]
},
"workshop-shortest-path-algorithm": {
"title": "Build a Shortest Path Algorithm",
"intro": [""]
"title": "Implement the Shortest Path Algorithm",
"intro": [
"In this workshop you will implement the shortest path algorithm to find the shortest path between two nodes in a graph."
]
},
"lab-adjacency-list-to-matrix-converter": {
"title": "Build an Adjacency List to Matrix Converter",
Expand Down Expand Up @@ -6275,6 +6282,7 @@
},
"front-end-development-libraries-v9": {
"title": "Front End Development Libraries Certification",
"note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

English-only note strings in zh-Hant locale

The new note fields for the v9 certifications (Front End Libraries, Python, Relational Databases, Back End Development & APIs, and Full Stack Developer) are all English-only in this Chinese Traditional locale file.

If the intent is full localization, these should eventually be translated into zh-Hant to match the rest of this file; otherwise users will see a mix of Chinese and English in the same section.

Also applies to: 6627-6627, 7085-7086, 7321-7321, 7439-7439

🤖 Prompt for AI Agents
client/i18n/locales/chinese-traditional/intro.json lines 6285 (and also 6627,
7085-7086, 7321, 7439): the "note" values are in English but this is the zh-Hant
locale; replace these English-only note strings with proper Chinese Traditional
translations that match the tone and meaning of the original (keep JSON string
structure and punctuation), ensure any placeholders or special characters remain
unchanged, and verify encoding/escaping so the file remains valid JSON.

"intro": [
"This course teaches you the libraries that developers use to build webpages: React, TypeScript, and more.",
"To earn your Front End Development Libraries Certification:",
Expand Down Expand Up @@ -6616,6 +6624,7 @@
},
"python-v9": {
"title": "Python Certification",
"note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.",
"intro": [
"This course teaches you the fundamentals of Python programming.",
"To earn your Python Certification:",
Expand Down Expand Up @@ -7074,6 +7083,7 @@
},
"relational-databases-v9": {
"title": "Relational Databases Certification",
"note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.",
"intro": [
"This course teaches you the fundamentals of relational databases.",
"To earn your Relational Databases Certification:",
Expand Down Expand Up @@ -7308,6 +7318,7 @@
},
"back-end-development-and-apis-v9": {
"title": "Back End Development and APIs Certification",
"note": "This certification is currently in development and will be available soon.",
"intro": [
"This course teaches you the fundamentals of back end development and APIs.",
"To earn your Back End Development and APIs Certification:",
Expand Down Expand Up @@ -7424,11 +7435,17 @@
},
"full-stack-developer-v9": {
"title": "Certified Full Stack Developer Curriculum",
"note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.",
"intro": [
"This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.",
"Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.",
"By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.",
"This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months."
"This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.",
"To qualify for the exam, you must earn the following certifications:",
"- Responsive Web Design Certification",
"- JavaScript Certification",
"- Front End Development Libraries Certification",
"- Python Certification",
"- Relational Databases Certification",
"- Back End Development and APIs Certification",
"Pass the exam to earn your Full Stack Developer Certification."
Comment on lines +7438 to +7448

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix small grammar issue in Full Stack Developer note

There’s a minor but user-visible grammar error in the full-stack-developer-v9.note text: “you're progress is saved” should be “your progress is saved”.

-    "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.",
+    "note": "If you were previously working through our full stack curriculum, don't worry - your progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.",
"intro": [
"This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.",
"Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.",
"By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.",
"This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months."
"This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.",
"To qualify for the exam, you must earn the following certifications:",
"- Responsive Web Design Certification",
"- JavaScript Certification",
"- Front End Development Libraries Certification",
"- Python Certification",
"- Relational Databases Certification",
"- Back End Development and APIs Certification",
"Pass the exam to earn your Full Stack Developer Certification."
"note": "If you were previously working through our full stack curriculum, don't worry - your progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.",
"intro": [
"This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.",
"To qualify for the exam, you must earn the following certifications:",
"- Responsive Web Design Certification",
"- JavaScript Certification",
"- Front End Development Libraries Certification",
"- Python Certification",
"- Relational Databases Certification",
"- Back End Development and APIs Certification",
"Pass the exam to earn your Full Stack Developer Certification."
🤖 Prompt for AI Agents
In client/i18n/locales/chinese-traditional/intro.json around lines 7438 to 7448,
the note string contains a grammar typo "you're progress is saved"; update that
phrase to "your progress is saved" (replace "you're" with "your") so the
sentence reads correctly, then validate the JSON and run a quick linter/locale
build to ensure no formatting issues.

],
"chapters": {
"certified-full-stack-developer-exam": "Certified Full Stack Developer Exam"
Expand Down Expand Up @@ -7457,12 +7474,12 @@
"intro": ["Placeholder intro"],
"chapters": {
"es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish",
"es-a1-chapter-letters-and-sounds": "Letters and Sounds",
"es-a1-chapter-the-spanish-alphabet": "The Spanish Alphabet",
"es-a1-chapter-greetings-and-introductions": "Greetings and Introductions"
},
"modules": {
"es-a1-module-introduction-and-certification-overview": "Introduction and Certification Overview",
"es-a1-module-alphabet-accents-and-punctuation": "Alphabet, Accents, and Punctuation",
"es-a1-module-alphabet-and-special-characters": "The Alphabet and Special Characters",
"es-a1-module-greetings-and-farewells": "Greetings and Farewells",
"es-a1-module-introducing-yourself": "Introducing Yourself",
"es-a1-module-first-questions": "First Questions"
Expand All @@ -7472,7 +7489,7 @@
"note": "Coming Winter 2025",
"intro": ["PLACEHOLDER: Write the module intro here."]
},
"es-a1-module-alphabet-accents-and-punctuation": {
"es-a1-module-alphabet-and-special-characters": {
"note": "Coming Winter 2025",
"intro": ["PLACEHOLDER: Write the module intro here."]
},
Expand Down Expand Up @@ -7522,8 +7539,8 @@
"title": "Punctuation",
"intro": ["", ""]
},
"es-a1-quiz-alphabet-accent-and-punctuation-quiz": {
"title": "Alphabet, Accent and Punctuation Quiz",
"es-a1-quiz-the-alphabet": {
"title": "The Spanish Alphabet Quiz",
"intro": ["", ""]
},
"es-a1-warm-up-introducing-yourself-basics": {
Expand Down Expand Up @@ -7573,6 +7590,22 @@
"es-a1-quiz-first-questions": {
"title": "First Questions Quiz",
"intro": ["", ""]
},
"es-a1-learn-vowels": {
"title": "Vowels",
"intro": ["", ""]
},
"es-a1-learn-consonants-and-special-characters": {
"title": "Consonants and Special Characters",
"intro": ["", ""]
},
"es-a1-review-the-alphabet": {
"title": "The Spanish Alphabet Review",
"intro": ["", ""]
},
"es-a1-practice-the-alphabet": {
"title": "The Spanish Alphabet Practice",
"intro": ["", ""]
}
}
},
Expand Down
49 changes: 35 additions & 14 deletions client/i18n/locales/chinese-traditional/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -685,6 +685,7 @@
"lab": "實驗室",
"review": "複習",
"quiz": "測驗",
"cert-project": "Certification Project",
"exam": "考試",
"warm-up": "Warm-up",
"learn": "Learn",
Expand Down Expand Up @@ -1194,20 +1195,20 @@
}
},
"title": {
"responsive-web-design": "響應式 Web 設計",
"responsive-web-design-cert": "響應式 Web 設計認證",
"javascript-algorithms-and-data-structures": "舊版 JavaScript 算法和數據結構",
"javascript-algorithms-and-data-structures-cert": "舊版 JavaScript 算法和數據結構認證",
"javascript-algorithms-and-data-structures-v8": "JavaScript 算法和數據結構",
"javascript-algorithms-and-data-structures-v8-cert": "JavaScript 算法和數據結構認證",
"front-end-development-libraries": "前端開發庫",
"front-end-development-libraries-cert": "前端開發庫認證",
"data-visualization": "數據可視化",
"data-visualization-cert": "數據可視化認證",
"relational-database-v8": "關係數據庫",
"relational-database-v8-cert": "關係數據庫認證",
"back-end-development-and-apis": "後端開發和 APIs",
"back-end-development-and-apis-cert": "後端開發和 APIs 認證",
"responsive-web-design": "Legacy Responsive Web Design V8",
"responsive-web-design-cert": "Legacy Responsive Web Design V8 Certification",
"javascript-algorithms-and-data-structures": "Legacy JavaScript Algorithms and Data Structures V7",
"javascript-algorithms-and-data-structures-cert": "Legacy JavaScript Algorithms and Data Structures V7 Certification",
"javascript-algorithms-and-data-structures-v8": "Legacy JavaScript Algorithms and Data Structures V8",
"javascript-algorithms-and-data-structures-v8-cert": "Legacy JavaScript Algorithms and Data Structures V8 Certification",
"front-end-development-libraries": "Front End Development Libraries V8",
"front-end-development-libraries-cert": "Front End Development Libraries V8 Certification",
"data-visualization": "Data Visualization V8",
"data-visualization-cert": "Data Visualization V8 Certification",
"relational-database-v8": "Relational Database V8",
"relational-database-v8-cert": "Relational Database V8 Certification",
"back-end-development-and-apis": "Back End Development and APIs V8",
"back-end-development-and-apis-cert": "Back End Development and APIs V8 Certification",
"quality-assurance-v7": "質量保證",
"quality-assurance-v7-cert": "質量保證認證",
"scientific-computing-with-python-v7": "Python 科學計算",
Expand Down Expand Up @@ -1353,6 +1354,26 @@
"two-questions": "恭喜你已經走到了這一步。在你開始考試之前,請回答這兩個簡短的調研問題。"
}
},
"speaking-modal": {
"heading": "Speaking Practice",
"repeat-sentence": "Repeat aloud this sentence:",
"play": "Play",
"playing": "Playing...",
"record": "Record",
"stop": "Stop",
"incorrect-words": "Incorrect words: {{words}}.",
"misplaced-words": "Misplaced words: {{words}}.",
"correct-congratulations": "That's correct! Congratulations!",
"very-good": "Very good!",
"try-again": "Try again.",
"no-audio-available": "No audio file available.",
"no-speech-detected": "Recording stopped. No speech detected.",
"speech-recognition-not-supported": "Speech recognition not supported in this browser.",
"recording-speak-now": "Recording. Speak now.",
"recording-stopped-processing": "Recording stopped. Processing...",
"microphone-access-error": "Error: Could not access microphone.",
"speaking-button": "Practice speaking"
},
"curriculum": {
"catalog": {
"title": "探索我們的目錄",
Expand Down
Loading