feat(curriculum): release A1 Chinese (#64764)

Co-authored-by: Huyen Nguyen <25715018+huyenltnguyen@users.noreply.github.com>
This commit is contained in:
miyaliu666
2025-12-22 03:43:52 +08:00
committed by GitHub
parent f021d667af
commit 3ebcc0ec55
27 changed files with 62 additions and 44 deletions
+16 -24
View File
@@ -8767,37 +8767,29 @@
"zh-a1-module-discussing-team-skills": "Discussing Team Skills"
},
"module-intros": {
"zh-a1-module-introduction-and-certification-overview": {
"note": "Coming Winter 2025",
"intro": ["PLACEHOLDER: Write the module intro here."]
},
"zh-a1-module-initials-and-finals": {
"note": "Coming Winter 2025",
"intro": ["PLACEHOLDER: Write the module intro here."]
},
"zh-a1-module-greetings-and-basic-introductions": {
"note": "Coming Winter 2025",
"intro": ["PLACEHOLDER: Write the module intro here."]
},
"zh-a1-module-asking-and-giving-basic-information": {
"note": "Coming Winter 2025",
"intro": ["PLACEHOLDER: Write the module intro here."]
},
"zh-a1-module-introducing-others": {
"note": "Coming Winter 2025",
"intro": ["PLACEHOLDER: Write the module intro here."]
"note": "Coming 2026",
"intro": [
"In this module, you will practice understanding short monologues that introduce information about other people, such as name, role, nationality, and age."
]
},
"zh-a1-module-getting-to-know-the-team": {
"note": "Coming Winter 2025",
"intro": ["PLACEHOLDER: Write the module intro here."]
"note": "Coming 2026",
"intro": [
"In this module, you will practice understanding a short conversation that asks and answers simple questions about colleagues."
]
},
"zh-a1-module-talking-about-personal-skills": {
"note": "Coming Winter 2025",
"intro": ["PLACEHOLDER: Write the module intro here."]
"note": "Coming 2026",
"intro": [
"In this module, you will practice understanding short monologues about what people can and cannot do, such as languages and work skills."
]
},
"zh-a1-module-discussing-team-skills": {
"note": "Coming Winter 2025",
"intro": ["PLACEHOLDER: Write the module intro here."]
"note": "Coming 2026",
"intro": [
"In this module, you will practice understanding a short conversation about who can do which tasks on a team and how a project starts."
]
}
},
"blocks": {
@@ -208,6 +208,7 @@
"core-certs-heading": "Recommended curriculum (still in beta):",
"learn-english-heading": "Learn English for Developers:",
"learn-spanish-heading": "Learn Professional Spanish:",
"learn-chinese-heading": "Learn Professional Chinese:",
"professional-certs-heading": "Professional certifications:",
"interview-prep-heading": "Prepare for the developer interview job search:",
"legacy-curriculum-heading": "Our archived coursework:",
+1
View File
@@ -32,6 +32,7 @@ const superBlockHeadings: { [key in SuperBlockStage]: string } = {
[SuperBlockStage.Core]: 'landing.core-certs-heading',
[SuperBlockStage.English]: 'landing.learn-english-heading',
[SuperBlockStage.Spanish]: 'landing.learn-spanish-heading',
[SuperBlockStage.Chinese]: 'landing.learn-chinese-heading',
[SuperBlockStage.Professional]: 'landing.professional-certs-heading',
[SuperBlockStage.Extra]: 'landing.interview-prep-heading',
[SuperBlockStage.Legacy]: 'landing.legacy-curriculum-heading',
@@ -147,7 +147,8 @@ describe('external curriculum data build', () => {
stage !== SuperBlockStage.Upcoming &&
stage !== SuperBlockStage.Catalog &&
stage !== SuperBlockStage.Core &&
stage !== SuperBlockStage.Spanish
stage !== SuperBlockStage.Spanish &&
stage !== SuperBlockStage.Chinese
);
})
.flatMap(([, superBlocks]) => superBlocks);
@@ -270,6 +270,7 @@ describe('external curriculum data build', () => {
core: SuperBlockStage.Core,
english: SuperBlockStage.English,
spanish: SuperBlockStage.Spanish,
chinese: SuperBlockStage.Chinese,
professional: SuperBlockStage.Professional,
extra: SuperBlockStage.Extra,
legacy: SuperBlockStage.Legacy,
@@ -93,6 +93,7 @@ enum SuperBlockStage {
Core = 'core',
English = 'english',
Spanish = 'spanish',
Chinese = 'chinese',
Professional = 'professional',
Extra = 'extra',
Legacy = 'legacy'
@@ -175,6 +176,14 @@ export const orderedSuperBlockInfo: OrderedSuperBlocks = {
}
],
[SuperBlockStage.Chinese]: [
{
dashedName: SuperBlocks.A1Chinese,
public: false,
title: intros[SuperBlocks.A1Chinese].title
}
],
[SuperBlockStage.Extra]: [
{
dashedName: SuperBlocks.TheOdinProject,
@@ -1,6 +1,6 @@
{
"name": "Certification Introduction",
"isUpcomingChange": true,
"isUpcomingChange": false,
"dashedName": "zh-a1-learn-certification-introduction",
"helpCategory": "Chinese Curriculum",
"blockLayout": "challenge-list",
@@ -1,6 +1,6 @@
{
"name": "Compound Finals",
"isUpcomingChange": true,
"isUpcomingChange": false,
"dashedName": "zh-a1-learn-compound-finals",
"helpCategory": "Chinese Curriculum",
"blockLayout": "challenge-grid",
@@ -1,6 +1,6 @@
{
"name": "Initials",
"isUpcomingChange": true,
"isUpcomingChange": false,
"dashedName": "zh-a1-learn-initials",
"helpCategory": "Chinese Curriculum",
"blockLayout": "challenge-grid",
@@ -1,6 +1,6 @@
{
"name": "Nasal Finals",
"isUpcomingChange": true,
"isUpcomingChange": false,
"dashedName": "zh-a1-learn-nasal-finals",
"helpCategory": "Chinese Curriculum",
"blockLayout": "challenge-grid",
@@ -1,6 +1,6 @@
{
"name": "Simple Finals",
"isUpcomingChange": true,
"isUpcomingChange": false,
"dashedName": "zh-a1-learn-simple-finals",
"helpCategory": "Chinese Curriculum",
"blockLayout": "challenge-grid",
@@ -1,6 +1,6 @@
{
"name": "Special Spelling Rules",
"isUpcomingChange": true,
"isUpcomingChange": false,
"dashedName": "zh-a1-learn-special-spelling-rules",
"helpCategory": "Chinese Curriculum",
"blockLayout": "challenge-grid",
@@ -1,6 +1,6 @@
{
"name": "Understanding the Greetings and Introductions",
"isUpcomingChange": true,
"isUpcomingChange": false,
"dashedName": "zh-a1-learn-understanding-greetings-and-introductions",
"helpCategory": "Chinese Curriculum",
"blockLayout": "challenge-grid",
@@ -1,6 +1,6 @@
{
"name": "Understanding the Questions and Answers",
"isUpcomingChange": true,
"isUpcomingChange": false,
"dashedName": "zh-a1-learn-understanding-questions-and-answers",
"helpCategory": "Chinese Curriculum",
"blockLayout": "challenge-grid",
@@ -1,6 +1,6 @@
{
"name": "Exchanging Basic Information",
"isUpcomingChange": true,
"isUpcomingChange": false,
"dashedName": "zh-a1-practice-exchanging-basic-information",
"helpCategory": "Chinese Curriculum",
"blockLayout": "challenge-grid",
@@ -1,6 +1,6 @@
{
"name": "Building Your Self-Introduction",
"isUpcomingChange": true,
"isUpcomingChange": false,
"dashedName": "zh-a1-practice-introducing-yourself",
"helpCategory": "Chinese Curriculum",
"blockLayout": "challenge-grid",
@@ -1,6 +1,6 @@
{
"name": "Pinyin Practice",
"isUpcomingChange": true,
"isUpcomingChange": false,
"dashedName": "zh-a1-practice-pinyin",
"helpCategory": "Chinese Curriculum",
"blockLayout": "challenge-grid",
@@ -1,6 +1,6 @@
{
"name": "Greetings and Introductions Quiz",
"isUpcomingChange": true,
"isUpcomingChange": false,
"dashedName": "zh-a1-quiz-greetings-and-introductions",
"helpCategory": "Chinese Curriculum",
"blockLayout": "link",
@@ -1,6 +1,6 @@
{
"name": "Introduction Questions Quiz",
"isUpcomingChange": true,
"isUpcomingChange": false,
"dashedName": "zh-a1-quiz-introduction-questions",
"helpCategory": "Chinese Curriculum",
"blockLayout": "link",
@@ -1,6 +1,6 @@
{
"name": "Greetings and Introductions Review",
"isUpcomingChange": true,
"isUpcomingChange": false,
"dashedName": "zh-a1-review-greetings-and-introductions",
"helpCategory": "Chinese Curriculum",
"blockLayout": "challenge-list",
@@ -1,6 +1,6 @@
{
"name": "Introduction Questions Review",
"isUpcomingChange": true,
"isUpcomingChange": false,
"dashedName": "zh-a1-review-introduction-questions",
"helpCategory": "Chinese Curriculum",
"blockLayout": "challenge-list",
@@ -1,6 +1,6 @@
{
"name": "Greeting New Colleagues",
"isUpcomingChange": true,
"isUpcomingChange": false,
"dashedName": "zh-a1-warm-up-greeting-new-colleagues",
"helpCategory": "Chinese Curriculum",
"blockLayout": "challenge-grid",
@@ -1,6 +1,6 @@
{
"name": "Meeting New Teammates",
"isUpcomingChange": true,
"isUpcomingChange": false,
"dashedName": "zh-a1-warm-up-meeting-new-teammates",
"helpCategory": "Chinese Curriculum",
"blockLayout": "challenge-grid",
@@ -52,9 +52,11 @@
},
{
"dashedName": "zh-a1-chapter-introducing-colleagues-and-family",
"comingSoon": true,
"modules": [
{
"dashedName": "zh-a1-module-introducing-others",
"comingSoon": true,
"blocks": [
"zh-a1-warm-up-introducing-others-basics",
"zh-a1-learn-meeting-the-team",
@@ -67,6 +69,7 @@
},
{
"dashedName": "zh-a1-module-getting-to-know-the-team",
"comingSoon": true,
"blocks": [
"zh-a1-warm-up-knowing-the-team-basics",
"zh-a1-learn-asking-about-the-team",
@@ -79,9 +82,11 @@
},
{
"dashedName": "zh-a1-chapter-expressing-what-you-can-and-cant-do",
"comingSoon": true,
"modules": [
{
"dashedName": "zh-a1-module-talking-about-personal-skills",
"comingSoon": true,
"blocks": [
"zh-a1-warm-up-personal-skills-basics",
"zh-a1-learn-can-or-cannot",
@@ -92,6 +97,7 @@
},
{
"dashedName": "zh-a1-module-discussing-team-skills",
"comingSoon": true,
"blocks": [
"zh-a1-warm-up-team-skills-basics",
"zh-a1-learn-who-can-do-what-on-the-team",
+1
View File
@@ -28,6 +28,7 @@ const nonArchivedSuperBlocks = [
intro[SuperBlocks.A2English].title,
intro[SuperBlocks.B1English].title,
intro[SuperBlocks.A1Spanish].title,
intro[SuperBlocks.A1Chinese].title,
intro[SuperBlocks.TheOdinProject].title,
intro[SuperBlocks.CodingInterviewPrep].title,
intro[SuperBlocks.ProjectEuler].title,
+5 -1
View File
@@ -46,6 +46,10 @@ const LANDING_PAGE_LINKS = [
slug: 'a1-professional-spanish',
name: 'A1 Professional Spanish Certification (Beta)'
},
{
slug: 'a1-professional-chinese',
name: 'A1 Professional Chinese Certification (Beta)'
},
{
slug: 'foundational-c-sharp-with-microsoft',
name: 'Free Foundational C# with Microsoft Certification'
@@ -68,7 +72,7 @@ test.describe('Map Component', () => {
page.getByText(translations.landing['interview-prep-heading'])
).toBeVisible();
const curriculumBtns = page.getByTestId('curriculum-map-button');
await expect(curriculumBtns).toHaveCount(15);
await expect(curriculumBtns).toHaveCount(16);
for (const { name, slug } of LANDING_PAGE_LINKS) {
const superblockLink = page.getByRole('link', {
+3 -1
View File
@@ -83,6 +83,7 @@ export enum SuperBlockStage {
Core,
English,
Spanish,
Chinese,
Professional,
Extra,
Legacy,
@@ -95,6 +96,7 @@ const defaultStageOrder = [
SuperBlockStage.Core,
SuperBlockStage.English,
SuperBlockStage.Spanish,
SuperBlockStage.Chinese,
SuperBlockStage.Extra,
SuperBlockStage.Legacy,
SuperBlockStage.Professional,
@@ -129,6 +131,7 @@ export const superBlockStages: StageMap = {
],
[SuperBlockStage.English]: [SuperBlocks.A2English, SuperBlocks.B1English],
[SuperBlockStage.Spanish]: [SuperBlocks.A1Spanish],
[SuperBlockStage.Chinese]: [SuperBlocks.A1Chinese],
[SuperBlockStage.Professional]: [SuperBlocks.FoundationalCSharp],
[SuperBlockStage.Extra]: [
SuperBlocks.TheOdinProject,
@@ -158,7 +161,6 @@ export const superBlockStages: StageMap = {
SuperBlocks.FullStackOpen,
SuperBlocks.A2Spanish,
SuperBlocks.A2Chinese,
SuperBlocks.A1Chinese,
SuperBlocks.DevPlayground,
SuperBlocks.FullStackDeveloper
],