From 84c5c641c3aa7c57a780dd2bd622dc6c80aaae3f Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri, 2 Oct 2020 00:28:40 +0530
Subject: [PATCH] chore(docs,i8n): processed translations from crowdin (#39769)
Co-authored-by: Crowdin Bot
---
docs/i18n/Afrikaans/FAQ.md | 101 ++++
docs/i18n/Afrikaans/_sidebar.md | 36 ++
docs/i18n/Afrikaans/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 326 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 475 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
.../Afrikaans/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Afrikaans/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../how-to-work-on-the-docs-theme.md | 40 ++
.../how-to-work-on-the-news-theme.md | 10 +
docs/i18n/Afrikaans/index.md | 45 ++
docs/i18n/Arabic/FAQ.md | 101 ++++
docs/i18n/Arabic/_sidebar.md | 36 ++
docs/i18n/Arabic/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 327 ++++++++++
.../flight-manuals/using-reply-templates.md | 128 ++++
.../working-on-virtual-machines.md | 478 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 195 ++++++
.../i18n/Arabic/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Arabic/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 543 +++++++++++++++++
.../Arabic/how-to-work-on-the-docs-theme.md | 40 ++
.../Arabic/how-to-work-on-the-news-theme.md | 8 +
docs/i18n/Arabic/index.md | 45 ++
docs/i18n/Catalan/FAQ.md | 101 ++++
docs/i18n/Catalan/_sidebar.md | 36 ++
docs/i18n/Catalan/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 326 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 475 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
.../Catalan/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Catalan/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../Catalan/how-to-work-on-the-docs-theme.md | 40 ++
.../Catalan/how-to-work-on-the-news-theme.md | 10 +
docs/i18n/Catalan/index.md | 45 ++
docs/i18n/Chinese/FAQ.md | 101 ++++
docs/i18n/Chinese/_sidebar.md | 36 ++
docs/i18n/Chinese/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 326 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 475 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 125 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
.../Chinese/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Chinese/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../Chinese/how-to-work-on-the-docs-theme.md | 40 ++
.../Chinese/how-to-work-on-the-news-theme.md | 10 +
docs/i18n/Chinese/index.md | 45 ++
docs/i18n/Czech/FAQ.md | 101 ++++
docs/i18n/Czech/_sidebar.md | 36 ++
docs/i18n/Czech/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 326 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 481 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
docs/i18n/Czech/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Czech/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../Czech/how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../Czech/how-to-work-on-the-docs-theme.md | 40 ++
.../Czech/how-to-work-on-the-news-theme.md | 10 +
docs/i18n/Czech/index.md | 45 ++
docs/i18n/Danish/FAQ.md | 101 ++++
docs/i18n/Danish/_sidebar.md | 36 ++
docs/i18n/Danish/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 326 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 481 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
.../i18n/Danish/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Danish/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../Danish/how-to-work-on-the-docs-theme.md | 40 ++
.../Danish/how-to-work-on-the-news-theme.md | 10 +
docs/i18n/Danish/index.md | 45 ++
docs/i18n/Dutch/FAQ.md | 101 ++++
docs/i18n/Dutch/_sidebar.md | 36 ++
docs/i18n/Dutch/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 325 ++++++++++
.../flight-manuals/using-reply-templates.md | 128 ++++
.../working-on-virtual-machines.md | 476 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
docs/i18n/Dutch/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 542 +++++++++++++++++
docs/i18n/Dutch/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../Dutch/how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../Dutch/how-to-work-on-the-docs-theme.md | 40 ++
.../Dutch/how-to-work-on-the-news-theme.md | 8 +
docs/i18n/Dutch/index.md | 45 ++
docs/i18n/Finnish/FAQ.md | 101 ++++
docs/i18n/Finnish/_sidebar.md | 36 ++
docs/i18n/Finnish/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 326 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 481 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
.../Finnish/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Finnish/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../Finnish/how-to-work-on-the-docs-theme.md | 40 ++
.../Finnish/how-to-work-on-the-news-theme.md | 10 +
docs/i18n/Finnish/index.md | 45 ++
docs/i18n/French/FAQ.md | 101 ++++
docs/i18n/French/_sidebar.md | 36 ++
docs/i18n/French/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 325 ++++++++++
.../flight-manuals/using-reply-templates.md | 128 ++++
.../working-on-virtual-machines.md | 482 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 196 ++++++
.../i18n/French/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/French/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 548 +++++++++++++++++
.../French/how-to-work-on-the-docs-theme.md | 40 ++
.../French/how-to-work-on-the-news-theme.md | 8 +
docs/i18n/French/index.md | 45 ++
docs/i18n/German/FAQ.md | 101 ++++
docs/i18n/German/_sidebar.md | 36 ++
docs/i18n/German/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 325 ++++++++++
.../flight-manuals/using-reply-templates.md | 125 ++++
.../working-on-virtual-machines.md | 482 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 195 ++++++
.../i18n/German/how-to-open-a-pull-request.md | 182 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/German/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 532 ++++++++++++++++
.../German/how-to-work-on-the-docs-theme.md | 40 ++
.../German/how-to-work-on-the-news-theme.md | 8 +
docs/i18n/German/index.md | 45 ++
docs/i18n/Greek/FAQ.md | 101 ++++
docs/i18n/Greek/_sidebar.md | 36 ++
docs/i18n/Greek/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 326 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 475 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
docs/i18n/Greek/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Greek/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../Greek/how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../Greek/how-to-work-on-the-docs-theme.md | 40 ++
.../Greek/how-to-work-on-the-news-theme.md | 10 +
docs/i18n/Greek/index.md | 45 ++
docs/i18n/Hebrew/FAQ.md | 101 ++++
docs/i18n/Hebrew/_sidebar.md | 36 ++
docs/i18n/Hebrew/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 326 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 475 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
.../i18n/Hebrew/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Hebrew/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../Hebrew/how-to-work-on-the-docs-theme.md | 40 ++
.../Hebrew/how-to-work-on-the-news-theme.md | 10 +
docs/i18n/Hebrew/index.md | 45 ++
docs/i18n/Hindi/FAQ.md | 101 ++++
docs/i18n/Hindi/_sidebar.md | 36 ++
docs/i18n/Hindi/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 326 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 475 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
docs/i18n/Hindi/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Hindi/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../Hindi/how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../Hindi/how-to-work-on-the-docs-theme.md | 40 ++
.../Hindi/how-to-work-on-the-news-theme.md | 10 +
docs/i18n/Hindi/index.md | 45 ++
docs/i18n/Hungarian/FAQ.md | 101 ++++
docs/i18n/Hungarian/_sidebar.md | 36 ++
docs/i18n/Hungarian/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 326 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 475 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
.../Hungarian/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Hungarian/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../how-to-work-on-the-docs-theme.md | 40 ++
.../how-to-work-on-the-news-theme.md | 10 +
docs/i18n/Hungarian/index.md | 45 ++
docs/i18n/Italian/FAQ.md | 101 ++++
docs/i18n/Italian/_sidebar.md | 36 ++
docs/i18n/Italian/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 325 ++++++++++
.../flight-manuals/using-reply-templates.md | 128 ++++
.../working-on-virtual-machines.md | 482 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 195 ++++++
.../Italian/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Italian/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 540 +++++++++++++++++
.../Italian/how-to-work-on-the-docs-theme.md | 40 ++
.../Italian/how-to-work-on-the-news-theme.md | 8 +
docs/i18n/Italian/index.md | 45 ++
docs/i18n/Japanese/FAQ.md | 101 ++++
docs/i18n/Japanese/_sidebar.md | 36 ++
docs/i18n/Japanese/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 328 ++++++++++
.../flight-manuals/using-reply-templates.md | 124 ++++
.../working-on-virtual-machines.md | 482 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 203 +++++++
.../Japanese/how-to-open-a-pull-request.md | 181 ++++++
.../how-to-setup-freecodecamp-locally.md | 550 +++++++++++++++++
docs/i18n/Japanese/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 566 ++++++++++++++++++
.../Japanese/how-to-work-on-the-docs-theme.md | 40 ++
.../Japanese/how-to-work-on-the-news-theme.md | 8 +
docs/i18n/Japanese/index.md | 45 ++
docs/i18n/Korean/FAQ.md | 101 ++++
docs/i18n/Korean/_sidebar.md | 36 ++
docs/i18n/Korean/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 325 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 476 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
.../i18n/Korean/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Korean/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../Korean/how-to-work-on-the-docs-theme.md | 40 ++
.../Korean/how-to-work-on-the-news-theme.md | 8 +
docs/i18n/Korean/index.md | 45 ++
docs/i18n/Norwegian/FAQ.md | 101 ++++
docs/i18n/Norwegian/_sidebar.md | 36 ++
docs/i18n/Norwegian/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 326 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 481 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 202 +++++++
.../Norwegian/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Norwegian/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../how-to-work-on-the-docs-theme.md | 40 ++
.../how-to-work-on-the-news-theme.md | 10 +
docs/i18n/Norwegian/index.md | 45 ++
docs/i18n/Polish/FAQ.md | 101 ++++
docs/i18n/Polish/_sidebar.md | 36 ++
docs/i18n/Polish/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 325 ++++++++++
.../flight-manuals/using-reply-templates.md | 128 ++++
.../working-on-virtual-machines.md | 478 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 196 ++++++
.../i18n/Polish/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 542 +++++++++++++++++
docs/i18n/Polish/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../Polish/how-to-work-on-the-docs-theme.md | 40 ++
.../Polish/how-to-work-on-the-news-theme.md | 8 +
docs/i18n/Polish/index.md | 45 ++
docs/i18n/Portuguese/FAQ.md | 101 ++++
docs/i18n/Portuguese/_sidebar.md | 36 ++
docs/i18n/Portuguese/devops.md | 225 +++++++
.../flight-manuals/moderator-handbook.md | 326 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 475 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 101 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
.../Portuguese/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Portuguese/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../how-to-work-on-the-docs-theme.md | 40 ++
.../how-to-work-on-the-news-theme.md | 10 +
docs/i18n/Portuguese/index.md | 45 ++
docs/i18n/Romanian/FAQ.md | 101 ++++
docs/i18n/Romanian/_sidebar.md | 36 ++
docs/i18n/Romanian/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 326 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 481 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 200 +++++++
.../Romanian/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Romanian/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../Romanian/how-to-work-on-the-docs-theme.md | 40 ++
.../Romanian/how-to-work-on-the-news-theme.md | 10 +
docs/i18n/Romanian/index.md | 45 ++
docs/i18n/Russian/FAQ.md | 101 ++++
docs/i18n/Russian/_sidebar.md | 36 ++
docs/i18n/Russian/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 325 ++++++++++
.../flight-manuals/using-reply-templates.md | 128 ++++
.../working-on-virtual-machines.md | 482 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 198 ++++++
.../Russian/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 542 +++++++++++++++++
docs/i18n/Russian/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 540 +++++++++++++++++
.../Russian/how-to-work-on-the-docs-theme.md | 40 ++
.../Russian/how-to-work-on-the-news-theme.md | 8 +
docs/i18n/Russian/index.md | 45 ++
docs/i18n/Serbian/FAQ.md | 101 ++++
docs/i18n/Serbian/_sidebar.md | 36 ++
docs/i18n/Serbian/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 326 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 475 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
.../Serbian/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Serbian/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../Serbian/how-to-work-on-the-docs-theme.md | 40 ++
.../Serbian/how-to-work-on-the-news-theme.md | 10 +
docs/i18n/Serbian/index.md | 45 ++
docs/i18n/Spanish/FAQ.md | 101 ++++
docs/i18n/Spanish/_sidebar.md | 36 ++
docs/i18n/Spanish/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 326 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 475 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
.../Spanish/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Spanish/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../Spanish/how-to-work-on-the-docs-theme.md | 40 ++
.../Spanish/how-to-work-on-the-news-theme.md | 10 +
docs/i18n/Spanish/index.md | 45 ++
docs/i18n/Swedish/FAQ.md | 101 ++++
docs/i18n/Swedish/_sidebar.md | 36 ++
docs/i18n/Swedish/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 326 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 481 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
.../Swedish/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Swedish/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../Swedish/how-to-work-on-the-docs-theme.md | 40 ++
.../Swedish/how-to-work-on-the-news-theme.md | 10 +
docs/i18n/Swedish/index.md | 45 ++
docs/i18n/Turkish/FAQ.md | 101 ++++
docs/i18n/Turkish/_sidebar.md | 36 ++
docs/i18n/Turkish/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 325 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 476 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
.../Turkish/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Turkish/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../Turkish/how-to-work-on-the-docs-theme.md | 40 ++
.../Turkish/how-to-work-on-the-news-theme.md | 8 +
docs/i18n/Turkish/index.md | 45 ++
docs/i18n/Ukrainian/FAQ.md | 101 ++++
docs/i18n/Ukrainian/_sidebar.md | 36 ++
docs/i18n/Ukrainian/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 326 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 481 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
.../Ukrainian/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Ukrainian/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../how-to-work-on-the-docs-theme.md | 40 ++
.../how-to-work-on-the-news-theme.md | 10 +
docs/i18n/Ukrainian/index.md | 45 ++
docs/i18n/Vietnamese/FAQ.md | 101 ++++
docs/i18n/Vietnamese/_sidebar.md | 36 ++
docs/i18n/Vietnamese/devops.md | 227 +++++++
.../flight-manuals/moderator-handbook.md | 326 ++++++++++
.../flight-manuals/using-reply-templates.md | 126 ++++
.../working-on-virtual-machines.md | 475 +++++++++++++++
.../how-to-catch-outgoing-emails-locally.md | 100 ++++
.../how-to-help-with-video-challenges.md | 199 ++++++
.../Vietnamese/how-to-open-a-pull-request.md | 179 ++++++
.../how-to-setup-freecodecamp-locally.md | 546 +++++++++++++++++
docs/i18n/Vietnamese/how-to-setup-wsl.md | 129 ++++
.../how-to-use-docker-on-windows-home.md | 15 +
.../how-to-work-on-coding-challenges.md | 541 +++++++++++++++++
.../how-to-work-on-the-docs-theme.md | 40 ++
.../how-to-work-on-the-news-theme.md | 10 +
docs/i18n/Vietnamese/index.md | 45 ++
448 files changed, 86763 insertions(+)
create mode 100644 docs/i18n/Afrikaans/FAQ.md
create mode 100644 docs/i18n/Afrikaans/_sidebar.md
create mode 100644 docs/i18n/Afrikaans/devops.md
create mode 100644 docs/i18n/Afrikaans/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Afrikaans/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Afrikaans/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Afrikaans/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Afrikaans/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Afrikaans/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Afrikaans/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Afrikaans/how-to-setup-wsl.md
create mode 100644 docs/i18n/Afrikaans/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Afrikaans/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Afrikaans/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Afrikaans/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Afrikaans/index.md
create mode 100644 docs/i18n/Arabic/FAQ.md
create mode 100644 docs/i18n/Arabic/_sidebar.md
create mode 100644 docs/i18n/Arabic/devops.md
create mode 100644 docs/i18n/Arabic/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Arabic/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Arabic/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Arabic/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Arabic/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Arabic/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Arabic/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Arabic/how-to-setup-wsl.md
create mode 100644 docs/i18n/Arabic/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Arabic/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Arabic/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Arabic/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Arabic/index.md
create mode 100644 docs/i18n/Catalan/FAQ.md
create mode 100644 docs/i18n/Catalan/_sidebar.md
create mode 100644 docs/i18n/Catalan/devops.md
create mode 100644 docs/i18n/Catalan/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Catalan/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Catalan/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Catalan/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Catalan/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Catalan/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Catalan/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Catalan/how-to-setup-wsl.md
create mode 100644 docs/i18n/Catalan/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Catalan/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Catalan/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Catalan/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Catalan/index.md
create mode 100644 docs/i18n/Chinese/FAQ.md
create mode 100644 docs/i18n/Chinese/_sidebar.md
create mode 100644 docs/i18n/Chinese/devops.md
create mode 100644 docs/i18n/Chinese/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Chinese/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Chinese/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Chinese/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Chinese/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Chinese/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Chinese/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Chinese/how-to-setup-wsl.md
create mode 100644 docs/i18n/Chinese/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Chinese/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Chinese/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Chinese/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Chinese/index.md
create mode 100644 docs/i18n/Czech/FAQ.md
create mode 100644 docs/i18n/Czech/_sidebar.md
create mode 100644 docs/i18n/Czech/devops.md
create mode 100644 docs/i18n/Czech/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Czech/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Czech/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Czech/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Czech/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Czech/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Czech/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Czech/how-to-setup-wsl.md
create mode 100644 docs/i18n/Czech/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Czech/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Czech/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Czech/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Czech/index.md
create mode 100644 docs/i18n/Danish/FAQ.md
create mode 100644 docs/i18n/Danish/_sidebar.md
create mode 100644 docs/i18n/Danish/devops.md
create mode 100644 docs/i18n/Danish/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Danish/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Danish/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Danish/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Danish/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Danish/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Danish/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Danish/how-to-setup-wsl.md
create mode 100644 docs/i18n/Danish/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Danish/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Danish/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Danish/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Danish/index.md
create mode 100644 docs/i18n/Dutch/FAQ.md
create mode 100644 docs/i18n/Dutch/_sidebar.md
create mode 100644 docs/i18n/Dutch/devops.md
create mode 100644 docs/i18n/Dutch/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Dutch/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Dutch/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Dutch/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Dutch/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Dutch/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Dutch/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Dutch/how-to-setup-wsl.md
create mode 100644 docs/i18n/Dutch/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Dutch/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Dutch/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Dutch/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Dutch/index.md
create mode 100644 docs/i18n/Finnish/FAQ.md
create mode 100644 docs/i18n/Finnish/_sidebar.md
create mode 100644 docs/i18n/Finnish/devops.md
create mode 100644 docs/i18n/Finnish/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Finnish/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Finnish/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Finnish/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Finnish/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Finnish/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Finnish/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Finnish/how-to-setup-wsl.md
create mode 100644 docs/i18n/Finnish/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Finnish/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Finnish/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Finnish/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Finnish/index.md
create mode 100644 docs/i18n/French/FAQ.md
create mode 100644 docs/i18n/French/_sidebar.md
create mode 100644 docs/i18n/French/devops.md
create mode 100644 docs/i18n/French/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/French/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/French/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/French/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/French/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/French/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/French/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/French/how-to-setup-wsl.md
create mode 100644 docs/i18n/French/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/French/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/French/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/French/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/French/index.md
create mode 100644 docs/i18n/German/FAQ.md
create mode 100644 docs/i18n/German/_sidebar.md
create mode 100644 docs/i18n/German/devops.md
create mode 100644 docs/i18n/German/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/German/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/German/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/German/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/German/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/German/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/German/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/German/how-to-setup-wsl.md
create mode 100644 docs/i18n/German/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/German/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/German/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/German/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/German/index.md
create mode 100644 docs/i18n/Greek/FAQ.md
create mode 100644 docs/i18n/Greek/_sidebar.md
create mode 100644 docs/i18n/Greek/devops.md
create mode 100644 docs/i18n/Greek/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Greek/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Greek/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Greek/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Greek/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Greek/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Greek/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Greek/how-to-setup-wsl.md
create mode 100644 docs/i18n/Greek/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Greek/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Greek/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Greek/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Greek/index.md
create mode 100644 docs/i18n/Hebrew/FAQ.md
create mode 100644 docs/i18n/Hebrew/_sidebar.md
create mode 100644 docs/i18n/Hebrew/devops.md
create mode 100644 docs/i18n/Hebrew/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Hebrew/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Hebrew/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Hebrew/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Hebrew/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Hebrew/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Hebrew/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Hebrew/how-to-setup-wsl.md
create mode 100644 docs/i18n/Hebrew/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Hebrew/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Hebrew/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Hebrew/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Hebrew/index.md
create mode 100644 docs/i18n/Hindi/FAQ.md
create mode 100644 docs/i18n/Hindi/_sidebar.md
create mode 100644 docs/i18n/Hindi/devops.md
create mode 100644 docs/i18n/Hindi/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Hindi/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Hindi/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Hindi/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Hindi/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Hindi/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Hindi/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Hindi/how-to-setup-wsl.md
create mode 100644 docs/i18n/Hindi/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Hindi/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Hindi/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Hindi/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Hindi/index.md
create mode 100644 docs/i18n/Hungarian/FAQ.md
create mode 100644 docs/i18n/Hungarian/_sidebar.md
create mode 100644 docs/i18n/Hungarian/devops.md
create mode 100644 docs/i18n/Hungarian/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Hungarian/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Hungarian/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Hungarian/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Hungarian/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Hungarian/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Hungarian/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Hungarian/how-to-setup-wsl.md
create mode 100644 docs/i18n/Hungarian/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Hungarian/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Hungarian/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Hungarian/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Hungarian/index.md
create mode 100644 docs/i18n/Italian/FAQ.md
create mode 100644 docs/i18n/Italian/_sidebar.md
create mode 100644 docs/i18n/Italian/devops.md
create mode 100644 docs/i18n/Italian/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Italian/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Italian/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Italian/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Italian/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Italian/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Italian/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Italian/how-to-setup-wsl.md
create mode 100644 docs/i18n/Italian/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Italian/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Italian/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Italian/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Italian/index.md
create mode 100644 docs/i18n/Japanese/FAQ.md
create mode 100644 docs/i18n/Japanese/_sidebar.md
create mode 100644 docs/i18n/Japanese/devops.md
create mode 100644 docs/i18n/Japanese/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Japanese/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Japanese/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Japanese/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Japanese/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Japanese/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Japanese/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Japanese/how-to-setup-wsl.md
create mode 100644 docs/i18n/Japanese/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Japanese/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Japanese/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Japanese/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Japanese/index.md
create mode 100644 docs/i18n/Korean/FAQ.md
create mode 100644 docs/i18n/Korean/_sidebar.md
create mode 100644 docs/i18n/Korean/devops.md
create mode 100644 docs/i18n/Korean/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Korean/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Korean/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Korean/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Korean/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Korean/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Korean/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Korean/how-to-setup-wsl.md
create mode 100644 docs/i18n/Korean/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Korean/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Korean/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Korean/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Korean/index.md
create mode 100644 docs/i18n/Norwegian/FAQ.md
create mode 100644 docs/i18n/Norwegian/_sidebar.md
create mode 100644 docs/i18n/Norwegian/devops.md
create mode 100644 docs/i18n/Norwegian/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Norwegian/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Norwegian/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Norwegian/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Norwegian/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Norwegian/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Norwegian/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Norwegian/how-to-setup-wsl.md
create mode 100644 docs/i18n/Norwegian/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Norwegian/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Norwegian/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Norwegian/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Norwegian/index.md
create mode 100644 docs/i18n/Polish/FAQ.md
create mode 100644 docs/i18n/Polish/_sidebar.md
create mode 100644 docs/i18n/Polish/devops.md
create mode 100644 docs/i18n/Polish/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Polish/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Polish/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Polish/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Polish/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Polish/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Polish/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Polish/how-to-setup-wsl.md
create mode 100644 docs/i18n/Polish/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Polish/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Polish/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Polish/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Polish/index.md
create mode 100644 docs/i18n/Portuguese/FAQ.md
create mode 100644 docs/i18n/Portuguese/_sidebar.md
create mode 100644 docs/i18n/Portuguese/devops.md
create mode 100644 docs/i18n/Portuguese/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Portuguese/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Portuguese/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Portuguese/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Portuguese/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Portuguese/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Portuguese/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Portuguese/how-to-setup-wsl.md
create mode 100644 docs/i18n/Portuguese/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Portuguese/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Portuguese/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Portuguese/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Portuguese/index.md
create mode 100644 docs/i18n/Romanian/FAQ.md
create mode 100644 docs/i18n/Romanian/_sidebar.md
create mode 100644 docs/i18n/Romanian/devops.md
create mode 100644 docs/i18n/Romanian/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Romanian/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Romanian/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Romanian/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Romanian/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Romanian/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Romanian/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Romanian/how-to-setup-wsl.md
create mode 100644 docs/i18n/Romanian/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Romanian/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Romanian/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Romanian/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Romanian/index.md
create mode 100644 docs/i18n/Russian/FAQ.md
create mode 100644 docs/i18n/Russian/_sidebar.md
create mode 100644 docs/i18n/Russian/devops.md
create mode 100644 docs/i18n/Russian/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Russian/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Russian/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Russian/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Russian/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Russian/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Russian/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Russian/how-to-setup-wsl.md
create mode 100644 docs/i18n/Russian/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Russian/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Russian/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Russian/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Russian/index.md
create mode 100644 docs/i18n/Serbian/FAQ.md
create mode 100644 docs/i18n/Serbian/_sidebar.md
create mode 100644 docs/i18n/Serbian/devops.md
create mode 100644 docs/i18n/Serbian/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Serbian/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Serbian/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Serbian/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Serbian/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Serbian/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Serbian/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Serbian/how-to-setup-wsl.md
create mode 100644 docs/i18n/Serbian/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Serbian/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Serbian/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Serbian/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Serbian/index.md
create mode 100644 docs/i18n/Spanish/FAQ.md
create mode 100644 docs/i18n/Spanish/_sidebar.md
create mode 100644 docs/i18n/Spanish/devops.md
create mode 100644 docs/i18n/Spanish/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Spanish/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Spanish/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Spanish/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Spanish/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Spanish/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Spanish/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Spanish/how-to-setup-wsl.md
create mode 100644 docs/i18n/Spanish/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Spanish/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Spanish/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Spanish/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Spanish/index.md
create mode 100644 docs/i18n/Swedish/FAQ.md
create mode 100644 docs/i18n/Swedish/_sidebar.md
create mode 100644 docs/i18n/Swedish/devops.md
create mode 100644 docs/i18n/Swedish/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Swedish/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Swedish/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Swedish/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Swedish/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Swedish/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Swedish/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Swedish/how-to-setup-wsl.md
create mode 100644 docs/i18n/Swedish/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Swedish/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Swedish/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Swedish/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Swedish/index.md
create mode 100644 docs/i18n/Turkish/FAQ.md
create mode 100644 docs/i18n/Turkish/_sidebar.md
create mode 100644 docs/i18n/Turkish/devops.md
create mode 100644 docs/i18n/Turkish/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Turkish/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Turkish/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Turkish/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Turkish/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Turkish/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Turkish/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Turkish/how-to-setup-wsl.md
create mode 100644 docs/i18n/Turkish/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Turkish/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Turkish/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Turkish/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Turkish/index.md
create mode 100644 docs/i18n/Ukrainian/FAQ.md
create mode 100644 docs/i18n/Ukrainian/_sidebar.md
create mode 100644 docs/i18n/Ukrainian/devops.md
create mode 100644 docs/i18n/Ukrainian/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Ukrainian/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Ukrainian/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Ukrainian/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Ukrainian/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Ukrainian/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Ukrainian/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Ukrainian/how-to-setup-wsl.md
create mode 100644 docs/i18n/Ukrainian/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Ukrainian/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Ukrainian/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Ukrainian/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Ukrainian/index.md
create mode 100644 docs/i18n/Vietnamese/FAQ.md
create mode 100644 docs/i18n/Vietnamese/_sidebar.md
create mode 100644 docs/i18n/Vietnamese/devops.md
create mode 100644 docs/i18n/Vietnamese/flight-manuals/moderator-handbook.md
create mode 100644 docs/i18n/Vietnamese/flight-manuals/using-reply-templates.md
create mode 100644 docs/i18n/Vietnamese/flight-manuals/working-on-virtual-machines.md
create mode 100644 docs/i18n/Vietnamese/how-to-catch-outgoing-emails-locally.md
create mode 100644 docs/i18n/Vietnamese/how-to-help-with-video-challenges.md
create mode 100644 docs/i18n/Vietnamese/how-to-open-a-pull-request.md
create mode 100644 docs/i18n/Vietnamese/how-to-setup-freecodecamp-locally.md
create mode 100644 docs/i18n/Vietnamese/how-to-setup-wsl.md
create mode 100644 docs/i18n/Vietnamese/how-to-use-docker-on-windows-home.md
create mode 100644 docs/i18n/Vietnamese/how-to-work-on-coding-challenges.md
create mode 100644 docs/i18n/Vietnamese/how-to-work-on-the-docs-theme.md
create mode 100644 docs/i18n/Vietnamese/how-to-work-on-the-news-theme.md
create mode 100644 docs/i18n/Vietnamese/index.md
diff --git a/docs/i18n/Afrikaans/FAQ.md b/docs/i18n/Afrikaans/FAQ.md
new file mode 100644
index 0000000000..be0299b973
--- /dev/null
+++ b/docs/i18n/Afrikaans/FAQ.md
@@ -0,0 +1,101 @@
+### I am new to GitHub and Open Source, where should I start?
+
+Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a compresensive resource of first timer friendly projects and guidelines.
+
+### Can I translate freeCodeCamp's curriculum?
+
+We will be kicking-off the localization efforts on freeCodeCamp starting with the **Chinese** first.
+
+We intend to make the curriculum available in more languages, but can't commit to any deadlines yet. Several operational limits like staff, active contributors and server costs play a role in driving the internationalisation (i18n) efforts.
+
+We intend to start i18n efforts in these languages: Arabic, Portuguese, Russian and Spanish (in no particular order) after we have released the curriculum in Chinese.
+
+**Why are you focusing on Chinese curriculum first?**
+
+China is the largest demographic regions, in our non-native English speaking audience. Currently, we have hundreds of thousands of users using an old version of the platform. Focusing on the Chinese curriculum will give us an estimate of logistics involved in the i18n.
+
+We will focus on Latin America as the demographic region for Portuguese and Spanish.
+
+We do not have any plans for i18n to any other languages other than the above for the foreseeable future.
+
+We do not encourage you to work on i18n on the above languages. We may accept pull requests, without any expectation of any timelines on deployments.
+
+### How can I report a new bug?
+
+If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions.
+
+If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this.
+
+Please note that any issues that seek coding help on a challenge will be closed. The issue tracker is strictly for codebase related issues and discussions. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before making a report.
+
+### How can I report a security issue?
+
+Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately.
+
+### I am a student, can I or our team work on a feature for academic credits?
+
+Yes, sure.
+
+While, we are open to all contributions, please note we are unable to commit to any timelines that may be a requirement at your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. We will not be able to give any PR any special attention to be fair to all.
+
+We request you to plan ahead and work on a feature with this in mind.
+
+### What do these different labels that are tagged on issues mean?
+
+The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels).
+
+### Where do I start if I want to work on an issue?
+
+You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on.
+
+> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are reserved for people that have not contributed to the freeCodeCamp codebase before. If these issues lack clarity on what needs to be done, feel free to ask questions in the comments.
+
+### I found a typo, should I report an issue before I can make a pull request?
+
+For typos and other wording changes, you can directly open pull requests without creating an issue first. Issues are more for discussing larger problems associated with code or structural aspects of the curriculum.
+
+However, please mention details, context etc. in the pull request's description area to help us understand and review your contribution even for minor changes.
+
+### How do I get an issue assigned to me?
+
+We typically do not assign issues to anyone other than long-time contributors to avoid ambiguous no-shows. Instead, we follow the below policy to be fair to everyone:
+
+1. The first pull request for any issue is preferred to be merged.
+2. In the case of multiple pull requests for the same issue, we give priority to the quality of the code in the pull requests.
+ - Did you include tests?
+ - Did you catch all usecases?
+ - Did you ensure all tests pass, and you confirmed everything works locally?
+3. Finally, we favor pull requests which follow our recommended guidelines.
+ - Did you follow the pull request checklist?
+ - Did you name your pull request title meaningfully?
+
+You do not need any permission for issues that are marked `help wanted` or `first timers only` as explained earlier.
+
+Follow the guidelines carefully and open a pull request.
+
+### I am stuck on something that is not included in this documentation.
+
+**Feel free to ask for help in:**
+
+- The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors).
+- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors).
+- The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS).
+
+We are excited to help you contribute to any of the topics that you would like to work on. Feel free to ask us questions on the related issue threads, and we will be glad to clarify. Make sure you search for your query before posting a new one.
+
+Be polite and patient. Our community of volunteers and moderators are always around to guide you through your queries.
+
+**Additional Assistance:**
+
+If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team:
+
+| Staff | Send message on Forum |
+|:--------------------- |:---------------------------------------------------------------------------- |
+| Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) |
+| Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) |
+| Kristofer Koishigawa | [@scissorsneedfoodtoo](https://forum.freecodecamp.org/u/scissorsneedfoodtoo) |
+| Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) |
+| Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) |
+| Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) |
+
+**You can email our developer staff at: `dev[at]freecodecamp.org`**
diff --git a/docs/i18n/Afrikaans/_sidebar.md b/docs/i18n/Afrikaans/_sidebar.md
new file mode 100644
index 0000000000..818cfd23e2
--- /dev/null
+++ b/docs/i18n/Afrikaans/_sidebar.md
@@ -0,0 +1,36 @@
+- **Getting Started**
+ - [Introduction](/index.md "Contribute to the freeCodeCamp.org Community")
+ - [Frequently Asked Questions](/FAQ.md)
+- **Code Contribution**
+- - [Set up freeCodeCamp locally](/how-to-setup-freecodecamp-locally.md)
+ - [Open a pull request](/how-to-open-a-pull-request.md)
+ - [Work on coding challenges](/how-to-work-on-coding-challenges.md)
+ - [Work on video challenges](/how-to-help-with-video-challenges.md)
+ - [Work on the news theme](/how-to-work-on-the-news-theme.md)
+ - [Work on the docs theme](/how-to-work-on-the-docs-theme.md)
+- **Optional Guides**
+ - [Catch outgoing emails locally](/how-to-catch-outgoing-emails-locally.md)
+ - [Set up freeCodeCamp on WSL](/how-to-setup-wsl.md)
+
+---
+
+- **中文社区贡献指南**
+ - [成为专栏作者](/i18n/chinese/news-author-application.md)
+ - [文章翻译计划](/i18n/chinese/news-translations.md)
+ - [视频翻译计划](/i18n/chinese/video-translations.md)
+
+---
+
+- **Flight Manuals** (for Staff & Mods)
+ - [Moderator Handbook](/flight-manuals/moderator-handbook.md)
+ - [Reply Templates](/flight-manuals/using-reply-templates.md)
+ - [DevOps Overview](/devops.md)
+ - [Working on Servers](/flight-manuals/working-on-virtual-machines.md)
+
+---
+
+- **Our Community**
+ - [**GitHub**](https://github.com/freecodecamp/freecodecamp)
+ - [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors)
+ - [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors)
+ - [**Discord Server**](https://discord.gg/pFspAhS)
diff --git a/docs/i18n/Afrikaans/devops.md b/docs/i18n/Afrikaans/devops.md
new file mode 100644
index 0000000000..ff7eec13cb
--- /dev/null
+++ b/docs/i18n/Afrikaans/devops.md
@@ -0,0 +1,227 @@
+# Developer Operations at freeCodeCamp.org
+
+This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems.
+
+Let us know, if you have feedback or queries, and we will be happy to clarify.
+
+## How do we build, test and deploy the codebase?
+
+This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**.
+
+This involves three steps to be followed in sequence:
+
+1. New changes (both fixes and features) are merged into our primary development branch (`master`) via pull requests.
+2. These changes are run through a series of automated tests.
+3. Once the tests pass we release the changes (or update them if needed) to deployments on our infrastructure.
+
+#### Building the codebase - Mapping Git Branches to Deployments.
+
+Typically, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure.
+
+This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release.
+
+It is identical to our live production environment at `freeCodeCamp.org`, other than it using a separate set of databases, servers, web-proxies, etc. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms.
+
+Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch.
+
+This is the final release that moves changes to our production platforms on freeCodeCamp.org.
+
+#### Testing changes - Integration and User Acceptance Testing.
+
+We employ various levels of integration and acceptance testing to check on the quality of the code. All our tests are done through software like [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) and [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp).
+
+We have unit tests for testing our challenge solutions, Server APIs and Client User interfaces. These help us test the integration between different components.
+
+> [!NOTE] We are also in the process of writing end user tests which will help in replicating real world scenarios like updating an email or making a call to the API or third-party services.
+
+Together these tests help in preventing issues from repeating themselves and ensure we do not introduce a bug while working on another bug or a feature.
+
+#### Deploying Changes - Pushing changes to servers.
+
+We have configured continuous delivery software to push changes to our development and production servers.
+
+Once the changes are pushed to the protected release branches, a build pipeline is automatically triggered for the branch. The build pipelines are responsible for building artifacts and keeping them in a cold storage for later use.
+
+The build pipeline goes on to trigger a corresponding release pipeline if it completes a successful run. The release pipelines are responsible for collecting the build artifacts, moving them to the servers and going live.
+
+Status of builds and releases are [available here](#build-test-and-deployment-status).
+
+## Triggering a build, test and deployment.
+
+Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp).
+
+> [!NOTE] In the upcoming days we would improve this flow to be done via pull-requests, for better access management and transparency.
+
+### Pushing changes to Staging Applications.
+
+1. Configure your remotes correctly.
+
+ ```sh
+ git remote -v
+ ```
+
+ **Results:**
+
+ ```
+ origin git@github.com:raisedadead/freeCodeCamp.git (fetch)
+ origin git@github.com:raisedadead/freeCodeCamp.git (push)
+ upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch)
+ upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push)
+ ```
+
+2. Make sure your `master` branch is pristine and in sync with the upstream.
+
+ ```sh
+ git checkout master
+ git fetch --all --prune
+ git reset --hard upstream/master
+ ```
+
+3. Check that the Travis CI is passing on the `master` branch for upstream.
+
+ The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch.
+
+ Checking status on Travis CI (screenshot)
+
+ 
+
+
+ If this is failing you should stop and investigate the errors.
+
+4. Confirm that you are able to build the repository locally.
+
+ ```
+ npm run clean-and-develop
+ ```
+
+5. Move changes from `master` to `production-staging` via a fast-forward merge
+
+ ```
+ git checkout production-staging
+ git merge master
+ git push upstream
+ ```
+
+ > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out.
+ >
+ > If they do, you may have done something incorrectly and you should just start over.
+
+The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later.
+
+The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers.
+
+> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total.
+
+### Pushing changes to Production Applications.
+
+The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment.
+
+| Do NOT execute these commands unless you have verified that everything is working on the staging platform. You should not bypass or skip any testing on staging before proceeding further. |
+|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| |
+
+
+1. Make sure your `production-staging` branch is pristine and in sync with the upstream.
+
+ ```sh
+ git checkout production-staging
+ git fetch --all --prune
+ git reset --hard upstream/production-staging
+ ```
+
+2. Move changes from `production-staging` to `production-current` via a fast-forward merge
+
+ ```
+ git checkout production-current
+ git merge production-staging
+ git push upstream
+ ```
+
+ > [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out.
+ >
+ > If they do, you may have done something incorrectly and you should just start over.
+
+The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline.
+
+> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete.
+
+**Additional Steps for Staff Action**
+
+One a release run is triggered, members of the developer staff team will receive an automated manual intervention email. They can either _approve_ or _reject_ the release run.
+
+If the changes are working nicely and have been tested on the staging platform, then it can be approved. The approval must be given within 4 hours of the release being triggered before getting rejected automatically. A staff can re-trigger the release run manually for rejected runs, or wait for the next cycle of release.
+
+For staff use:
+
+| Check your email for a direct link or [go to the release dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) after the build run is complete. |
+|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| |
+
+
+Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live.
+
+> [!TIP|label:Estimates] The release run typically takes ~15-20 mins for each client instance, and ~5-10 mins for each API instance to be available live. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval).
+
+## Build, Test and Deployment Status
+
+Here is the current test, build and deployment status of the codebase.
+
+| Type | Branch | Status | Dashboard |
+|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- |
+| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) |  | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
+| CI Tests | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) |  | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
+| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) |
+| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
+| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) |  | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
+| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) |
+| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
+
+## Early access and beta testing
+
+We welcome you to test these releases in a **"public beta testing"** mode and get early access to upcoming features to the platforms. Sometimes these features/changes are referred to as **next, beta, staging,** etc. interchangeably.
+
+Your contributions via feedback and issue reports will help us in making the production platforms at `freeCodeCamp.org` more **resilient**, **consistent** and **stable** for everyone.
+
+We thank you for reporting bugs that you encounter and help in making freeCodeCamp.org better. You rock!
+
+### Identifying the upcoming version of the platforms
+
+Currently a public beta testing version is available at:
+
+
+
+> [!NOTE] The domain name is different than **`freeCodeCamp.org`**. This is intentional to prevent search engine indexing and avoid confusion for regular users of the platform.
+
+### Identifying the current version of the platforms
+
+**The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).**
+
+The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site.
+
+You can identify the exact version deployed by visiting the build and deployment logs available in the status section. Alternatively you can also ping us in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) for a confirmation.
+
+### Known Limitations
+
+There are some known limitations and tradeoffs when using the beta version of the platform.
+
+- #### All data / personal progress on these beta platforms `will NOT be saved or carried over` to production.
+
+ **Users on the beta version will have a separate account from the production.** The beta version uses a physically separate database from production. This gives us the ability to prevent any accidental loss of data or modifications. The dev team may purge the database on this beta version as needed.
+
+- #### There are no guarantees on the uptime and reliability of the beta platforms.
+
+ Deployment is expected to be frequent and in rapid iterations, sometimes multiple times a day. As a result there will be unexpected downtime at times or broken functionality on the beta version.
+
+- #### Do not send regular users to this site as a measure of confirming a fix
+
+ The beta site is and always has been to augment local development and testing, nothing else. It's not a promise of what’s coming, but a glimpse of what is being worked upon.
+
+- #### Sign page may look different than production
+
+ We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get.
+
+## Reporting issues and leaving feedback
+
+Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage.
+
+You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum.
diff --git a/docs/i18n/Afrikaans/flight-manuals/moderator-handbook.md b/docs/i18n/Afrikaans/flight-manuals/moderator-handbook.md
new file mode 100644
index 0000000000..5916fb23de
--- /dev/null
+++ b/docs/i18n/Afrikaans/flight-manuals/moderator-handbook.md
@@ -0,0 +1,326 @@
+# The official freeCodeCamp Moderator Handbook.
+
+This will help you moderate different places in our community, including:
+
+- GitHub issues & pull requests
+- The forum, chat rooms, Facebook groups, and other online meeting places
+- In-person events like study groups, hackathons, and conferences
+
+**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.**
+
+This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere.
+
+The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you.
+
+> [!NOTE] "With great power comes great responsibility." - Uncle Ben
+
+As a moderator, temperament is more important than technical skill.
+
+Listen. Be Helpful. Don't abuse your power.
+
+freeCodeCamp is an inclusive community, and we need to keep it that way.
+
+We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org).
+
+# Moderating GitHub
+
+Moderators have the ability to close issues and accept or close pull requests.
+
+Moderators have two primary responsibilities regarding GitHub:
+
+1. QA'ing and merging pull requests
+2. Evaluating and responding to issues
+
+## Moderating Pull Requests
+
+Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them.
+
+### Types of Pull Requests
+
+1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this:
+
+ > Thank you for your pull request.
+ >
+ > I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead.
+ >
+ > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding.
+
+2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes.
+
+3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look.
+
+### How to merge or close pull requests
+
+First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface.
+
+Depending on the type of pull request it is, follow the corresponding rules listed above.
+
+Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first.
+
+Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict.
+
+If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read.
+
+You should then comment on the pull request, thanking the contributor in your own personal way.
+
+If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below:
+
+
+
+If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready.
+
+Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md".
+
+There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves.
+
+In both of these situations, you should go ahead and close their pull request and reply with this standard message:
+
+> Thank you for opening this pull request.
+>
+> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you.
+>
+> Thank you and happy coding.
+
+If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request.
+
+## Moderating GitHub Issues
+
+freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled.
+
+### Types of GitHub Issues
+
+1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue.
+
+ > Thank you for reporting this issue.
+ >
+ > This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests.
+ >
+ > If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened.
+ >
+ > Thank you and happy coding.
+
+2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then:
+
+- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate.
+- If the issue is more significant, flag as `bug`. If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label.
+
+3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue.
+
+ > Thank you for reporting this issue.
+ >
+ > This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate.
+ >
+ > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding.
+
+4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label:
+
+ > Thank you for reporting this issue.
+ >
+ > This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue.
+ >
+ > If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding.
+
+### Closing Stale, Outdated, Inactive Issues and Pull Requests
+
+- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves.
+
+- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc.
+
+- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status.
+
+### Other guidelines for Moderators on GitHub
+
+Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository.
+
+Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR.
+
+If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely.
+
+# Moderating the Forum
+
+As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations.
+
+Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back."
+
+![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png)
+
+These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds.
+
+### Deleting forum posts
+
+Forum moderators have the ability to delete user's posts. You should only do this for the following instances:
+
+1. Someone has posted a pornographic or graphically violent image.
+2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it.
+3. Someone has flooded a thread with lots of spam messages.
+
+### Dealing with spam
+
+For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning."
+
+You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff).
+
+### Dealing with off-topic conversations
+
+Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate.
+
+In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads.
+
+Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions.
+
+### Underage Users
+
+Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well.
+
+```markdown
+SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service
+
+It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws.
+
+Please rejoin once you have reached at least 13 years of age.
+
+Thank you for understanding.
+```
+
+# Moderating Facebook
+
+If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately.
+
+Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate.
+
+But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group.
+
+# Moderating Discord
+
+Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord:
+
+1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin.
+
+2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:**
+
+- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message:
+
+```
+This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server.
+
+I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first:
+
+1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/
+2. Message me back confirming that you have finished reading it.
+3. Explain to me why you think I suspended you, and why I should remove your suspension.
+```
+
+- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like:
+
+```
+Suspended: _@username_
+Reason(s): _Spamming, trolling_
+Evidence: _One or more links to the offending message(s)_
+CoC: _Sent_
+```
+
+- A report for removing a suspension should look like:
+
+```
+I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did.
+```
+
+- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:".
+
+3. **How to ban and/or unban**
+
+- In order to ban someone, right click on their username/profile picture and select "Ban ". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record.
+- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban".
+
+Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server.
+
+4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations:
+
+- Someone has posted a pornographic or graphically violent image.
+- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it.
+- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable.
+- Someone has posted advertisement and / or a self-promoting message / image (social media).
+
+In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team.
+
+5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it.
+
+6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example:
+
+- Camper posts a wall of code to request help
+
+ Moderator: @username Please use Codepen or Pastebin when posting large amounts of code.
+
+- Or if you really have to explain why:
+
+ Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct.
+
+- For mild and unintentional violations of the code of conduct
+
+ Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/
+
+7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature.
+
+8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front.
+
+9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct!
+
+10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not.
+
+# How to become a moderator
+
+If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator.
+
+If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc.
+
+> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories.
+
+# How we retire inactive moderators
+
+Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message:
+
+> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past.
+
+> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know.
+
+# How our Contributors room works
+
+Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups.
+
+Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact.
+
+# Dealing with solicitors
+
+You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is).
+
+# Dealing with (mental) health inquiries
+
+You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help!
+
+If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways:
+
+- The user is guaranteed some privacy
+- Public chat is no longer disrupted
+- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself
+
+> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help!
+
+If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log:
+
+> Reference medical advice:
+
+After that, you can remove the Suspension from the user as you normally do.
+
+Helpful URLs:
+
+http://www.suicide.org/international-suicide-hotlines.html
+
+# A note on free speech
+
+Sometimes people will defend something offensive or incendiary that they said as "free speech."
+
+This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them.
+
+
+
+Thanks for reading this, and thanks for helping the developer community!
diff --git a/docs/i18n/Afrikaans/flight-manuals/using-reply-templates.md b/docs/i18n/Afrikaans/flight-manuals/using-reply-templates.md
new file mode 100644
index 0000000000..ced39a3641
--- /dev/null
+++ b/docs/i18n/Afrikaans/flight-manuals/using-reply-templates.md
@@ -0,0 +1,126 @@
+# Using Reply Templates
+
+These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues.
+
+> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below.
+
+### Thank you
+
+```markdown
+Thank you for your contribution to the page! 👍
+We are happy to accept these changes and look forward to future contributions. 🎉
+```
+
+### Thank you and congrats
+
+> For thanking and encouraging first-time contributors.
+
+```markdown
+Hi @username. Congrats on your first pull request (PR)! 🎉
+
+Thank you for your contribution to the page! 👍
+We are happy to accept these changes and look forward to future contributions. 📝
+```
+
+### Build Error
+
+```markdown
+Hey @username
+
+We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️
+
+Once you resolve these issues, We will be able to review your PR and merge it. 😊
+
+---
+
+> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅
+>
+> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝
+```
+
+### Syncing Fork
+
+> When PR is not up to date with the `master` branch.
+
+``````markdown
+Hey @username
+
+We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️
+
+```bash
+Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md'
+``````
+
+This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved.
+
+To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo.
+
+Using the command line, you can do this in three easy steps:
+
+```bash
+git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git
+
+git fetch upstream
+
+git pull upstream master
+```
+
+If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above.
+
+Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊
+
+---
+
+> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄
+>
+> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝
+``````
+
+### Merge Conflicts
+
+> When PR has merge conflicts that need to be resolved.¹
+
+```markdown
+Hey @username
+
+We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️
+
+Once you resolve these conflicts, We will be able to review your PR and merge it. 😊
+
+---
+
+> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️
+>
+> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝
+``````
+¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them.
+
+### Duplicate
+
+> When PR is repetitive or a duplicate.
+
+```markdown
+Hey @username
+
+It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓
+
+If you feel you have more to add, please feel free to open up a new PR.
+
+Thanks again! 😊
+
+---
+
+> If you have any questions, feel free to reach out through [Gitter](https://gitter.im/FreeCodeCamp/Contributors) or by commenting below. 💬
+```
+
+### Closing invalid pull requests
+
+> When PR is invalid.
+
+```markdown
+Hey @username
+
+You have not added any content, We will be closing this PR and marking it as `invalid`. 😓️
+
+Feel free to open another PR though! 👍
+```
\ No newline at end of file
diff --git a/docs/i18n/Afrikaans/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Afrikaans/flight-manuals/working-on-virtual-machines.md
new file mode 100644
index 0000000000..c5c91b90f1
--- /dev/null
+++ b/docs/i18n/Afrikaans/flight-manuals/working-on-virtual-machines.md
@@ -0,0 +1,475 @@
+# Flight Manual for working on Virtual Machines
+
+As a member of the staff or the dev-team, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc.
+
+Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping.
+
+# Get a list of the VMs
+
+> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well.
+
+## Azure
+
+Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
+
+> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):**
+
+```
+brew install azure-cli
+```
+
+> **(One-time) Login:**
+
+```
+az login
+```
+
+> **Get the list of VM names and P addresses:**
+
+```
+az vm list-ip-addresses --output table
+```
+
+## Digital Ocean
+
+Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl
+
+> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):**
+
+```
+brew install doctl
+```
+
+> **(One-time) Login:**
+
+Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean
+
+```
+doctl auth init
+```
+
+> **Get the list of VM names and IP addresses:**
+
+```
+doctl compute droplet list --format "ID,Name,PublicIPv4"
+```
+
+# Spin a VM (or VM Scale Set)
+
+> Todo: Add instructions for spinning VM(s)
+
+
+
+
+# Keep VMs updated
+
+You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes.
+
+> [!WARNING] Before you run these commands:
+>
+> - Make sure that the VM has been provisioned completely and there is no post-install steps running.
+> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications.
+
+Update package information
+
+```console
+sudo apt update
+```
+
+Upgrade installed packages
+
+```console
+sudo apt upgrade -y
+```
+
+Cleanup unused packages
+
+```console
+sudo apt autoremove -y
+```
+
+# Work on Web Servers (Proxy)
+
+We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures.
+
+The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config).
+
+## First Install
+
+Provisioning VMs with the Code
+
+### 1. (Optional) Install NGINX and configure from repository.
+
+The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s).
+
+If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages:
+
+```console
+sudo su
+
+cd /var/www/html
+git clone https://github.com/freeCodeCamp/error-pages
+
+cd /etc/
+rm -rf nginx
+git clone https://github.com/freeCodeCamp/nginx-config nginx
+
+cd /etc/nginx
+```
+
+### 2. Install Cloudflare origin certificates and upstream application config.
+
+Get the Cloudflare origin certificates from the secure storage and install at required locations.
+
+**OR**
+
+Move over existing certificates:
+
+```console
+# Local
+scp -r username@source-server-public-ip:/etc/nginx/ssl ./
+scp -pr ./ssl username@target-server-public-ip:/tmp/
+
+# Remote
+rm -rf ./ssl
+mv /tmp/ssl ./
+```
+
+Update Upstream Configurations:
+
+```console
+vi configs/upstreams.conf
+```
+
+Add/update the source/origin application IP addresses.
+
+### 3. Setup networking and firewalls.
+
+Configure Azure firewalls and `ufw` as needed for ingress origin addresses.
+
+### 4. Add the VM to the load balancer backend pool.
+
+Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed.
+
+## Logging and Monitoring
+
+1. Check status for NGINX service using the below command:
+
+```console
+sudo systemctl status nginx
+```
+
+2. Logging and monitoring for the servers are available at:
+
+>
+## Updating Instances (Maintenance)
+
+Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so:
+
+1. SSH into the instance and enter sudo
+
+```console
+sudo su
+```
+
+2. Get the latest config code.
+
+```console
+cd /etc/nginx
+git fetch --all --prune
+git reset --hard origin/master
+```
+
+3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx).
+
+```console
+nginx -t
+nginx -s reload
+```
+
+# Work on API Instances
+
+1. Install build tools for node binaries (`node-gyp`) etc.
+
+```console
+sudo apt install build-essential
+```
+
+## First Install
+
+Provisioning VMs with the Code
+
+1. Install Node LTS.
+
+2. Update `npm` and install PM2 and setup logrotate and startup on boot
+
+ ```console
+ npm i -g npm
+ npm i -g pm2
+ pm2 install pm2-logrotate
+ pm2 startup
+ ```
+
+3. Clone freeCodeCamp, setup env and keys.
+
+ ```console
+ git clone https://github.com/freeCodeCamp/freeCodeCamp.git
+ cd freeCodeCamp
+ git checkout production-current # or any other branch to be deployed
+ ```
+
+4. Create the `.env` from the secure credentials storage.
+
+5. Create the `google-credentials.json` from the secure credentials storage.
+
+6. Install dependencies
+
+ ```console
+ npm ci
+ ```
+
+7. Build the server
+
+ ```console
+ npm run ensure-env && npm run build:server
+ ```
+
+8. Start Instances
+
+ ```console
+ cd api-server
+ pm2 start production-start.js -i max --max-memory-restart 600M --name org
+ ```
+
+## Logging and Monitoring
+
+```console
+pm2 logs
+```
+
+```console
+pm2 monit
+```
+
+## Updating Instances (Maintenance)
+
+Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables.
+
+> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs.
+
+### 1. Manual Updates - Used for updating dependencies, env variables.
+
+1. Stop all instances
+
+```console
+pm2 stop all
+```
+
+2. Install dependencies
+
+```console
+npm ci
+```
+
+3. Build the server
+
+```console
+npm run ensure-env && npm run build:server
+```
+
+4. Start Instances
+
+```console
+pm2 start all --update-env && pm2 logs
+```
+
+### 2. Rolling updates - Used for logical changes to code.
+
+```console
+pm2 reload all --update-env && pm2 logs
+```
+
+> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation.
+
+# Work on Client Instances
+
+1. Install build tools for node binaries (`node-gyp`) etc.
+
+```console
+sudo apt install build-essential
+```
+
+## First Install
+
+Provisioning VMs with the Code
+
+1. Install Node LTS.
+
+2. Update `npm` and install PM2 and setup logrotate and startup on boot
+
+ ```console
+ npm i -g npm
+ npm i -g pm2
+ npm install -g serve
+ pm2 install pm2-logrotate
+ pm2 startup
+ ```
+
+3. Clone client config, setup env and keys.
+
+ ```console
+ git clone https://github.com/freeCodeCamp/client-config.git client
+ cd client
+ ```
+
+ ```console
+ git clone https://github.com/freeCodeCamp/client-config.git client
+ cd client
+ ```
+
+ Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline.
+
+ > Todo: This setup needs to move to S3 or Azure Blob storage
+ >
+ > ```console
+ echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh
+ chmod +x client-start-primary.sh
+ pm2 delete client-primary
+ pm2 start ./client-start-primary.sh --name client-primary
+ echo "serve -c ../../serve.json www -p 52525" >> client-start-secondary.sh
+ chmod +x client-start-secondary.sh
+ pm2 delete client-secondary
+ pm2 start ./client-start-secondary.sh --name client-secondary
+```
+
+## Logging and Monitoring
+
+```console
+pm2 logs
+```
+
+```console
+pm2 monit
+```
+
+## Updating Instances (Maintenance)
+
+Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables.
+
+> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs.
+
+### 1. Manual Updates - Used for updating dependencies, env variables.
+
+1. Stop all instances
+
+ ```console
+ pm2 stop all
+ ```
+
+2. Install or update dependencies
+
+3. Start Instances
+
+ ```console
+ pm2 start all --update-env && pm2 logs
+ ```
+
+### 2. Rolling updates - Used for logical changes to code.
+
+```console
+pm2 reload all --update-env && pm2 logs
+```
+
+> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation.
diff --git a/docs/i18n/Afrikaans/how-to-catch-outgoing-emails-locally.md b/docs/i18n/Afrikaans/how-to-catch-outgoing-emails-locally.md
new file mode 100644
index 0000000000..397ea3382a
--- /dev/null
+++ b/docs/i18n/Afrikaans/how-to-catch-outgoing-emails-locally.md
@@ -0,0 +1,100 @@
+> **Note:** This is an **optional** step and is required only when working with email workflows
+
+## Introduction
+
+Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. An alternative to using an email service provider to send actual email messages, Mailhog is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance.
+
+## Installing MailHog
+
+MailHog can be installed on macOS, Windows and Linux.
+
+- [Introduction](#introduction)
+- [Installing MailHog](#installing-mailhog)
+ - [Installing MailHog on macOS](#installing-mailhog-on-macos)
+ - [Installing MailHog on Windows](#installing-mailhog-on-windows)
+ - [Installing MailHog on Linux](#installing-mailhog-on-linux)
+- [Using MailHog](#using-mailhog)
+- [Useful Links](#useful-links)
+
+### Installing MailHog on macOS
+
+Install MailHog on macOS with [Homebrew](https://brew.sh/):
+
+```bash
+brew install mailhog
+brew services start mailhog
+```
+
+The above commands will start a mailhog service in the background.
+
+When the installation completes, you can start [using MailHog](#using-mailhog).
+
+### Installing MailHog on Windows
+
+Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Locate and click on the link for your Windows version (32 or 64 bit) and a .exe file will be downloaded to your computer.
+
+When the download completes, click to open the file. A Windows firewall notification may appear, requesting access permission for MailHog. A standard Windows command line prompt will open where MailHog will be running once firewall access is granted.
+
+Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file.
+
+Start [using MailHog](#using-mailhog).
+
+### Installing MailHog on Linux
+
+First, install [Go](https://golang.org).
+
+Run the following commands to install GO on Debian-based systems like Ubuntu and Linux Mint.
+
+```bash
+sudo apt-get install golang
+```
+
+Run the following commands to install GO on RPM-based systems like CentOS, Fedora, Red Hat Linux, etc.
+
+```bash
+sudo dnf install golang
+```
+
+Alternatively, run the following commands to install GO.
+
+```bash
+sudo yum install golang
+```
+
+Now set the path for Go with the following commands.
+
+```bash
+echo "export GOPATH=$HOME/go" >> ~/.profile
+echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile
+source ~/.profile
+```
+
+Finally, enter the commands below to install and run MailHog.
+
+```bash
+go get github.com/mailhog/MailHog
+sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog
+mailhog
+```
+
+Start [using MailHog](#using-mailhog).
+
+## Using MailHog
+
+Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below.
+
+
+
+Emails sent by your freeCodeCamp installation will appear as below
+
+
+
+Two tabs that allow you to view either plain text or source content will be available when you open a given email. Ensure that the plain text tab is selected as below.
+
+
+
+All links in the email should be clickable and resolve to their URL.
+
+## Useful Links
+
+- Check out the [MailHog](https://github.com/mailhog/MailHog) repository for further information related to MailHog. Additional information is also available regarding custom MailHog configurations.
diff --git a/docs/i18n/Afrikaans/how-to-help-with-video-challenges.md b/docs/i18n/Afrikaans/how-to-help-with-video-challenges.md
new file mode 100644
index 0000000000..0724aaef02
--- /dev/null
+++ b/docs/i18n/Afrikaans/how-to-help-with-video-challenges.md
@@ -0,0 +1,199 @@
+# How to help with video challenges
+
+Video challenges are a new type of challenge in the freeCodeCamp curriculum.
+
+A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course.
+
+The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them.
+
+You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges.
+
+
+## Challenge Template
+
+Below is a template of what the challenge markdown files look like.
+
+````md
+---
+id: Unique identifier (alphanumerical, MongoDB_id)
+title: Challenge Title
+challengeType: 11
+videoId: 'YouTube videoId for video challenge'
+---
+
+## Description
+
+
+An optional description with helpful information related to the video.
+
+
+## Tests
+
+
+
+```yml
+question:
+ text: 'Question'
+ answers:
+ - 'Answer One'
+ - 'Answer Two'
+ - 'Answer Three'
+ solution: 3
+````
+
+
+````
+
+## Creating questions for video challenges
+
+### Access the video challenge markdown files
+
+You can find the markdown files for video challenges at the following locations in the curriculum:
+
+- [Data Analysis with Python Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course)
+- [TensorFlow 2.0 Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow)
+- [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpy)
+- [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work)
+
+Pick a challenge markdown file from the options above.
+
+### Skim through the video associated with the challenge and create a mutiple choice question
+
+First, find the videoId.
+
+For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format.
+````
+---
+id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Example A challengeType: 11
+videoId: nVAaxZ34khk
+---
+```
+
+Next, access the YouTube video with that videoId. The url for the video will be:
+https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets)
+
+In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk
+
+Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video.
+
+### Add the question to the markdown file
+
+You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser.
+
+If a question has not yet been added to a particular video challenge, it will have the following default question:
+
+```yml
+question:
+ text: |
+ Question
+ answers:
+ - |
+ one
+ - |
+ two
+ - |
+ three
+ solution: 3
+```
+
+Update the word “Question” with your question. Update the “one”, “two”, and “three” with the possible answers. Make sure to update the solution number with which answer is correct. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks.
+
+#### Use markdown to format your question
+
+The text in the question is parsed as markdown. The simplest way to ensure that it is formatted correctly is to start the question with `text: |`, like this:
+
+```yml
+question:
+ text: |
+ Question
+```
+
+Then you need to make sure that your question is on a new line and indented one level more than `text: |`.
+
+The same approach can be used for the answers, so the entire question becomes
+
+```yml
+question:
+ text: |
+ Question
+ answers:
+ - |
+ First answer
+ - |
+ Second
+ - |
+ Third
+ solution: 2
+```
+
+Make sure each answer is plausible but there is only one correct answer.
+
+#### Use of HTML
+
+Questions and answers can contain certain HTML tags like `
` for a new line. HTML tags should be used sparingly, when questions cannot be expressed without them.
+
+### Question examples
+
+#### Examples without HTML
+
+````yml
+question:
+ text: |
+ What does this JavaScript code log to the console?
+ ```js
+ console.log('hello world');
+ ````
+
+
+ Select an answer!
+ answers:
+ - | hello *world*
+ - | **hello** world
+ - | hello world solution: 3
+````
+
+````yml
+question:
+ text: |
+ What will print out after running this code:
+ ```py
+ width = 15
+ height = 12.0
+ print(height/3)
+ ````
+ answers:
+ - | 39
+ - | 4
+ - | 4.0
+ - | 5.0
+ - | 5 solution: 3
+````
+
+#### Example with HTML
+
+```yml
+question:
+ text: |
+ What will print out after running this code:
+ width = 15
height = 12.0
print(height/3)
+ answers:
+ - |
+ 39
+ - |
+ 4
+ - |
+ 4.0
+ - |
+ 5.0
+ - |
+ 5
+ solution: 3
+````
+
+The final example demonstrates that HTML can be used, but that it is not as readable as the version without it.
+
+For more examples, you can look at the markdown files for the following video course. All the challenges already have questions: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody)
+
+## Open a pull request
+
+After creating one or more questions, you can commit the changes to a new branch and [open a pull request](how-to-open-a-pull-request.md).
diff --git a/docs/i18n/Afrikaans/how-to-open-a-pull-request.md b/docs/i18n/Afrikaans/how-to-open-a-pull-request.md
new file mode 100644
index 0000000000..ced6082c8a
--- /dev/null
+++ b/docs/i18n/Afrikaans/how-to-open-a-pull-request.md
@@ -0,0 +1,179 @@
+# How to open a Pull Request (PR)
+
+A pull request enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, or coding challenges you should follow these guidelines to send a PR.
+
+## Prepare a good PR title
+
+We recommend using [conventional title and messages](https://www.conventionalcommits.org/) for commits and pull request. The convention has the following format:
+
+> `([optional scope(s)]): `
+>
+> For example:
+>
+> `fix(learn): tests for the do...while loop challenge`
+
+When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description.
+
+**Type:**
+
+| Type | When to select |
+|:----- |:---------------------------------------------------------------------------- |
+| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. |
+| feat | Only if you are adding new functionality, tests, etc. |
+| chore | Changes that are not related to code, tests or verbiage of a lesson. |
+| docs | Changes to `/docs` directory or the contributing guidelines, etc. |
+
+**Scope:**
+
+You can select a scope from [this list of labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope).
+
+**Description:**
+
+Keep it short (less than 30 characters) and simple, you can add more information in the PR description box and comments.
+
+Some examples of good PRs titles would be:
+
+- `fix(a11y): improved search bar contrast`
+- `feat: add more tests to html and css challenges`
+- `fix(api,client): prevent CORS errors on form submission`
+- `docs(i18n): Chinese translation of local setup`
+
+## Proposing a Pull Request
+
+1. Once the edits have been committed, you will be prompted to create a pull request on your fork's GitHub Page.
+
+ 
+
+2. By default, all pull requests should be against the freeCodeCamp main repo, `master` branch.
+
+ Make sure that your Base Fork is set to freeCodeCamp/freeCodeCamp when raising a Pull Request.
+
+ 
+
+3. Submit the pull request from your branch to freeCodeCamp's `master` branch.
+
+4. In the body of your PR include a more detailed summary of the changes you made and why.
+
+ - You will be presented with a pull request template. This is a checklist that you should have followed before opening the pull request.
+
+ - Fill in the details as you see fit. This information will be reviewed and the reviewers will decide whether or not your pull request is accepted.
+
+ - If the PR is meant to address an existing GitHub Issue then, at the end of your PR's description body, use the keyword _Closes_ with the issue number to [automatically close that issue if the PR is accepted and merged](https://help.github.com/en/articles/closing-issues-using-keywords).
+
+ > Example: `Closes #123` will close issue 123
+
+5. Indicate if you have tested on a local copy of the site or not.
+
+ This is very important when making changes that are not just edits to text content like documentation or a challenge description. Examples of changes that need local testing include JavaScript, CSS, or HTML which could change the functionality or layout of a page.
+
+## Feedback on pull requests
+
+> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute.
+
+Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course.
+
+If you need any assistance please discuss in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors), we are more than happy to help you.
+
+> [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork.
+
+## Conflicts on a pull request
+
+Conflicts can arise because many contributors work on the repository, and changes can break your PR which is pending a review and merge.
+
+More often than not you may not require a rebase, because we squash all commits, however if a rebase is requested here is what you should do.
+
+### For usual bug fixes and features
+
+When you are working on regular bugs and features on our development branch `master`, you are able to do a simple rebase:
+
+1. Rebase your local copy:
+
+ ```console
+ git checkout
+ git pull --rebase upstream master
+ ```
+
+2. Resolve any conflicts and add / edit commits
+
+ ```console
+ # Either
+ git add .
+ git commit -m "chore: resolve conflicts"
+
+ # Or
+ git add .
+ git commit --amend --no-edit
+ ```
+
+3. Push back your changes to the PR
+
+ ```console
+ git push --force origin
+ ```
+
+### For upcoming curriculum and features
+
+When you are working on features for our upcoming curriculum `next-*` branches, you have do a cherry pick:
+
+1. Make sure your upstream comes in sync with your local:
+
+ ```console
+ git checkout master
+ git fetch --all --prune
+ git checkout next-python-projects
+ git reset --hard upstream/next-python-projects
+ ```
+
+2. Take backup
+
+ a. Either delete your local branch after taking a backup (if you still have it locally):
+
+ ```console
+ git checkout
+
+ # example:
+ # git checkout feat/add-numpy-video-question
+
+ git checkout -b
+
+ # example:
+ # git checkout -b backup-feat/add-numpy-video-question
+
+ git branch -D
+ ```
+
+ b. Or just a backup of your pr branch (if you do not have it locally):
+
+ ```console
+ git checkout -b origin/
+
+ # example:
+ # git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question
+ ```
+
+4. Start off with a clean slate:
+
+ ```console
+ git checkout -b next-python-projects
+ git cherry-pick
+ ```
+
+5. Resolve any conflicts, and cleanup, install run tests
+
+ ```console
+ npm run clean
+
+ npm ci
+ npm run test:curriculum --superblock=
+
+ # example:
+
+ # npm run test:curriculum --superblock=python-for-everybody
+
+ ```
+
+6. If everything looks good push back to the PR
+
+ ```console
+ git push --force origin
+ ```
diff --git a/docs/i18n/Afrikaans/how-to-setup-freecodecamp-locally.md b/docs/i18n/Afrikaans/how-to-setup-freecodecamp-locally.md
new file mode 100644
index 0000000000..2f4d778cfd
--- /dev/null
+++ b/docs/i18n/Afrikaans/how-to-setup-freecodecamp-locally.md
@@ -0,0 +1,546 @@
+Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly.
+
+For some of the contribution workflows, you need to have freeCodeCamp running locally. For example, previewing coding challenges or debugging and fixing bugs in the codebase.
+
+> [!TIP] If you are not interested in setting up freeCodeCamp locally consider using Gitpod, a free online dev environment.
+>
+> [](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
+>
+> (Starts a ready-to-code dev environment for freeCodeCamp in your browser.)
+
+## Prepare your local machine
+
+Start by installing the prerequisite software for your operating system.
+
+We primarily support development on **\*nix** systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS.
+
+We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl).
+
+Some community members also develop on Windows 10 natively with Git for Windows (Git Bash), and other tools installed on Windows. We do not have official support for such a setup at this time, we recommend using WSL2 instead.
+
+**Prerequisites:**
+
+| Prerequisite | Version | Notes |
+| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) |
+| npm (comes bundled with Node) | `6.x` | Does not have LTS releases, we use the version bundled with Node LTS |
+| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). |
+
+> [!DANGER] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details.
+
+If Node.js is already installed on your machine, run the following commands to validate the versions:
+
+```console
+node -v
+npm -v
+```
+
+> [!TIP] We highly recommend updating to the latest stable releases of the software listed above, also known as Long Term Support (LTS) releases.
+
+Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once.
+
+**Follow these steps to get your development environment ready:**
+
+1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated.
+
+2. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub.
+
+3. Install a code editor of your choice.
+
+ We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or [Atom](https://atom.io/). These are great, free and open source code editors.
+
+4. Set up linting for your code editor.
+
+ You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything that doesn't conform to [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121).
+
+ > [!TIP] Please do not ignore any linting errors. They are meant to **help** you and to ensure a clean and simple codebase.
+
+## Fork the repository on GitHub
+
+[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (a.k.a _repo_) on GitHub.
+
+This is essential, as it allows you to work on your own copy of freeCodeCamp on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR).
+
+> [!TIP] The main repository at `https://github.com/freeCodeCamp/freeCodeCamp` is often referred to as the `upstream` repository.
+>
+> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository.
+
+**Follow these steps to fork the `https://github.com/freeCodeCamp/freeCodeCamp` repository:**
+
+1. Go to the freeCodeCamp repository on GitHub:
+
+2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/))
+
+3. After the repository has been forked, you will be taken to your copy of the freeCodeCamp repository at `https://github.com/YOUR_USER_NAME/freeCodeCamp`
+
+
+
+ How to fork freeCodeCamp on GitHub (screenshot)
+
+
+
+
+
+
+## Clone your fork from GitHub
+
+[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`.
+
+Run these commands on your local machine:
+
+1. Open a Terminal / Command Prompt / Shell in your projects directory
+
+ _i.e.: `/yourprojectsdirectory/`_
+
+2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username
+
+ ```console
+ git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git
+ ```
+
+This will download the entire freeCodeCamp repository to your projects directory.
+
+Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit.
+
+## Set up syncing from parent
+
+Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository.
+
+[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository.
+
+You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly.
+
+1. Change directory to the new freeCodeCamp directory:
+
+ ```console
+ cd freeCodeCamp
+ ```
+
+2. Add a remote reference to the main freeCodeCamp repository:
+
+ ```console
+ git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git
+ ```
+
+3. Ensure the configuration looks correct:
+
+ ```console
+ git remote -v
+ ```
+
+ The output should look something like below:
+
+ ```console
+ origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch)
+ origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push)
+ upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch)
+ upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push)
+ ```
+
+## Running freeCodeCamp locally
+
+Now that you have a local copy of freeCodeCamp, you can follow these instructions to run it locally. This will allow you to:
+
+- Preview edits to pages as they would appear on the learning platform.
+- Work on UI related issues and enhancements.
+- Debug and fix issues with the application servers and client apps.
+
+If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported.
+
+And as always, feel free to hop on to our [Contributors Chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors) or [our Discord server](https://discord.gg/6vJYm9V), for quick queries.
+
+> [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts.
+>
+> You can always return to this part of the instructions later. You should **only** skip this step if you do not need to run the apps on your machine.
+>
+> [Skip to making changes](#making-changes-locally).
+
+### Configuring dependencies
+
+#### Step 1: Set up the environment variable file
+
+The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step.
+
+```console
+# Create a copy of the "sample.env" and name it ".env".
+# Populate it with the necessary API keys and secrets:
+
+# macOS / Linux
+cp sample.env .env
+
+# Windows
+copy sample.env .env
+```
+
+The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is.
+
+> [!TIP] Keep in mind if you want to use services like Auth0 or Algolia, you'll have to acquire your own API keys for those services and edit the entries accordingly in the `.env` file.
+
+#### Step 2: Install dependencies
+
+This step will install the dependencies required for the application to run:
+
+```console
+npm ci
+```
+
+#### Step 3: Start MongoDB and seed the database
+
+Before you can run the application locally, you will need to start the MongoDB service.
+
+> [!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the `MONGOHQ_URL` value in the `.env` file should work fine. If you are using a custom configuration, modify this value as needed.
+
+Start the MongoDB server in a separate terminal:
+
+- On macOS & Ubuntu:
+
+ ```console
+ mongod
+ ```
+
+- On Windows, you must specify the full path to the `mongod` binary
+
+ ```console
+ "C:\Program Files\MongoDB\Server\3.6\bin\mongod"
+ ```
+
+ Make sure to replace `3.6` with the version you have installed
+
+> [!TIP] You can avoid having to start MongoDB every time by installing it as a background service. You can [learn more about it in their documentation for your OS](https://docs.mongodb.com/manual/administration/install-community/)
+
+Next, let's seed the database. In this step, we run the below command that fills the MongoDB server with some initial data sets that are required by services. These include a few schemas, among other things.
+
+```console
+npm run seed
+```
+
+#### Step 4: Start the freeCodeCamp client application and API server
+
+You can now start up the API server and the client applications.
+
+```console
+npm run develop
+```
+
+This single command will fire up all the services, including the API server and the client applications available for you to work on.
+
+> [!NOTE] Once ready, open a web browser and **visit **. If the app loads, congratulations – you're all set! You now have a copy of freeCodeCamp's entire learning platform running on your local machine.
+
+> [!TIP] The API Server serves APIs at `http://localhost:3000`. The Gatsby app serves the client application at `http://localhost:8000`
+
+> If you visit you should see the available APIs.
+
+## Sign in with a local user
+
+Your local setup automatically populates a local user in the database. Clicking the `Sign In` button will automatically authenticate you into the local application.
+
+However, accessing the user portfolio page is a little tricky. In development, Gatsby takes over serving the client-side pages and hence you will get a `404` page for the user portfolio when working locally.
+
+Simply clicking the **"Preview Custom 404 Page"** button will forward you to the correct page.
+
+
+
+ How to sign in when working locally (screenshot)
+
+
+
+
+
+
+## Making changes locally
+
+You can now make changes to files and commit your changes to your local clone of your fork.
+
+Follow these steps:
+
+1. Validate that you are on the `master` branch:
+
+ ```console
+ git status
+ ```
+
+ You should get an output like this:
+
+ ```console
+ On branch master
+ Your branch is up-to-date with 'origin/master'.
+
+ nothing to commit, working directory clean
+ ```
+
+ If you are not on master or your working directory is not clean, resolve any outstanding files/commits and checkout `master`:
+
+ ```console
+ git checkout master
+ ```
+
+2. Sync the latest changes from the freeCodeCamp upstream `master` branch to your local master branch:
+
+ > [!WARNING] If you have any outstanding pull request that you made from the `master` branch of your fork, you will lose them at the end of this step.
+ >
+ > You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `master`.
+
+ This step **will sync the latest changes** from the main repository of freeCodeCamp. It is important that you rebase your branch on top of the latest `upstream/master` as often as possible to avoid conflicts later.
+
+ Update your local copy of the freeCodeCamp upstream repository:
+
+ ```console
+ git fetch upstream
+ ```
+
+ Hard reset your master branch with the freeCodeCamp master:
+
+ ```console
+ git reset --hard upstream/master
+ ```
+
+ Push your master branch to your origin to have a clean history on your fork on GitHub:
+
+ ```console
+ git push origin master --force
+ ```
+
+ You can validate your current master matches the upstream/master by performing a diff:
+
+ ```console
+ git diff upstream/master
+ ```
+
+ The resulting output should be empty.
+
+3. Create a fresh new branch:
+
+ Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `master`. This will soil your copy of freeCodeCamp and you may have to start over with a fresh clone or fork.
+
+ Check that you are on `master` as explained previously, and branch off from there:
+
+ ```console
+ git checkout -b fix/update-guide-for-xyz
+ ```
+
+ Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique.
+
+ Some examples of good branch names are:
+
+ ```md
+ fix/update-challenges-for-react
+ fix/update-guide-for-html-css
+ fix/platform-bug-sign-in-issues
+ feat/add-guide-article-for-javascript
+ translate/add-spanish-basic-html
+ ```
+
+4. Edit pages and work on code in your favorite text editor.
+
+5. Once you are happy with the changes you should optionally run freeCodeCamp locally to preview the changes.
+
+6. Make sure you fix any errors and check the formatting of your changes.
+
+7. Check and confirm the files you are updating:
+
+ ```console
+ git status
+ ```
+
+ This should show a list of `unstaged` files that you have edited.
+
+ ```console
+ On branch feat/documentation
+ Your branch is up to date with 'upstream/feat/documentation'.
+
+ Changes not staged for commit:
+ (use "git add/rm ..." to update what will be committed)
+ (use "git checkout -- ..." to discard changes in working directory)
+
+ modified: CONTRIBUTING.md
+ modified: docs/README.md
+ modified: docs/how-to-setup-freecodecamp-locally.md
+ modified: docs/how-to-work-on-guide-articles.md
+ ...
+ ```
+
+8. Stage the changes and make a commit:
+
+ In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed.
+
+ ```console
+ git add path/to/my/changed/file.ext
+ ```
+
+ Or you can add all the `unstaged` files to the staging area:
+
+ ```console
+ git add .
+ ```
+
+ Only the files that were moved to the staging area will be added when you make a commit.
+
+ ```console
+ git status
+ ```
+
+ Output:
+
+ ```console
+ On branch feat/documentation
+ Your branch is up to date with 'upstream/feat/documentation'.
+
+ Changes to be committed:
+ (use "git reset HEAD ..." to unstage)
+
+ modified: CONTRIBUTING.md
+ modified: docs/README.md
+ modified: docs/how-to-setup-freecodecamp-locally.md
+ modified: docs/how-to-work-on-guide-articles.md
+ ```
+
+ Now, you can commit your changes with a short message like so:
+
+ ```console
+ git commit -m "fix: my short commit message"
+ ```
+
+ Some examples:
+
+ ```md
+ fix: update guide article for Java - for loop
+ feat: add guide article for alexa skills
+ ```
+
+ Optional:
+
+ We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices.
+
+ Some examples of conventional commit messages are:
+
+ ```md
+ fix: update HTML guide article
+ fix: update build scripts for Travis-CI
+ feat: add article for JavaScript hoisting
+ docs: update contributing guidelines
+ ```
+
+ Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message.
+
+ This does not take any additional time than an unconventional message like 'update file' or 'add index.md'
+
+ You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits).
+
+9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with:
+
+ ```console
+ git commit --amend
+ ```
+
+ This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description.
+
+10. Next, you can push your changes to your fork:
+
+ ```console
+ git push origin branch/name-here
+ ```
+
+## Proposing a Pull Request (PR)
+
+After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md).
+
+## Quick commands reference
+
+A quick reference to the commands that you will need when working locally.
+
+| command | description |
+| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
+| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. |
+| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. |
+| `npm run develop` | Starts the freeCodeCamp API Server and Client Applications. |
+| `npm test` | Run all JS tests in the system, including client, server, lint and challenge tests. |
+| `npm run test:client` | Run the client test suite. |
+| `npm run test:curriculum` | Run the curriculum test suite. |
+| `npm run test:curriculum --block='Basic HTML and HTML5'` | Test a specific Block. |
+| `npm run test:curriculum --superblock='responsive-web-design'` | Test a specific SuperBlock. |
+| `npm run test-curriculum-full-output` | Run the curriculum test suite, without bailing after the first error |
+| `npm run test:server` | Run the server test suite. |
+| `npm run e2e` | Run the Cypress end to end tests. |
+| `npm run clean` | Uninstalls all dependencies and cleans up caches. |
+
+## Troubleshooting
+
+### Issues with installing the recommended prerequisites
+
+We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2).
+
+It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query.
+
+If you are on a different OS and/or are still running into issues, see [getting help](#getting-help).
+
+> [!WARNING]
+>
+> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project.
+
+### Issues with the UI, Fonts, build errors etc.
+
+If you face issues with the UI, Fonts or see builds errors a cleanup can be useful:
+
+```console
+npm run clean
+npm ci
+npm run seed
+npm run develop
+```
+
+OR
+
+Use the shortcut
+
+```
+npm run clean-and-develop
+```
+
+If you continue to face issues with the build, cleaning up the workspace is recommend.
+
+Use `git clean` in interative mode:
+
+```
+git clean -ifdX
+```
+
+
+
+ How to clean git untracked files (screenshot)
+
+
+
+
+
+
+### Issues with API, Login, Challenge Submissions, etc.
+
+If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program.
+
+**On Linux / macOS / WSL on Windows - From Terminal:**
+
+```console
+netstat -ab | grep "3000"
+
+tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN
+```
+
+**On Windows - From Elevated PowerShell:**
+
+```powershell
+netstat -ab | Select-String "3000"
+
+TCP 0.0.0.0:3000 DESKTOP LISTENING
+```
+
+### Issues installing dependencies
+
+If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources.
+
+The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup.
+
+## Getting Help
+
+If you are stuck and need help, let us know by asking in the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or the [Contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) on Gitter.
+
+There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution.
diff --git a/docs/i18n/Afrikaans/how-to-setup-wsl.md b/docs/i18n/Afrikaans/how-to-setup-wsl.md
new file mode 100644
index 0000000000..68bce6dde6
--- /dev/null
+++ b/docs/i18n/Afrikaans/how-to-setup-wsl.md
@@ -0,0 +1,129 @@
+# Set up freeCodeCamp on Windows Subsystem for Linux (WSL)
+
+> [!NOTE] Before you follow these instructions make sure your system meets the requirements
+>
+> **WSL 2**: Windows 10 64-bit (Version 2004, Build 19041 or higher) - available for all distributions including Windows 10 Home.
+>
+> **Docker Desktop for Windows**: See respective requirements for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) and [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements)
+
+This guide covers some common steps with the setup of WSL2. Once some of the common issues with WSL2 are addressed, you should be able to follow the our local setup guide to work with freeCodeCamp on Windows running a WSL distro like Ubuntu.
+
+## Enable WSL
+
+Follow the instructions on the [official documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to install WSL1 and followed by upgrading to WSL2.
+
+## Install Ubuntu
+
+1. We recommended using Ubuntu-18.04 or above with WSL2.
+
+ > [!NOTE]
+ >
+ > While you may use other non-debian based distros, they all come with their own gotchas and are beyond the scope of this guide.
+
+2. Update the dependencies for the OS
+
+ ```console
+ sudo apt update
+ sudo apt upgrade -y
+
+ # cleanup
+ sudo apt autoremove -y
+ ```
+
+## Set up Git
+
+Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `git --version`.
+
+```output
+~
+❯ git --version
+git version 2.25.1
+```
+
+(Optional but recommended) You can now proceed to [setting up your ssh keys](https://help.github.com/articles/generating-an-ssh-key) with GitHub.
+
+## Installing a Code Editor
+
+We highly recommend installing [Visual Studio Code](https://code.visualstudio.com) on Windows 10. It has great support for WSL and automatically installs all the necessary extensions on your WSL distro.
+
+Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows.
+
+## Installing Docker Desktop
+
+**Docker Desktop for Windows** allows you to install and run database and services like MongoDB, NGINX, etc. This is useful to avoid common pitfalls with installing MongoDB or other services directly on Windows or WSL2.
+
+Follow the instructuction on the [official documentation](https://docs.docker.com/docker-for-windows/install) and install Docker Desktop for your Windows distribution.
+
+There are some minimum hardware requirements for the best experience.
+
+## Configure Docker Desktop for WSL
+
+Once Docker Desktop is installed, [follow these instructions](https://docs.docker.com/docker-for-windows/wsl) and configure it to use the Ubuntu-18.04 installation as a backend.
+
+This makes it so that the containers run on WSL side instead of running on Windows. You will be able to access the services over `http://localhost` on both Windows and Ubuntu.
+
+## Install MongoDB from Docker Hub
+
+Once you have configured Docker Desktop to work with WSL2, follow these steps to start a MongoDB service:
+
+1. Launch a new Ubuntu-18.04 terminal
+
+2. Pull `MongoDB 3.6` from dockerhub
+
+ ```console
+ docker pull mongo:3
+ ```
+
+3. Start the MongoDB service at port `27017`, and configure it to run automatically on system restarts
+
+ ```console
+ docker run -it \
+ -v mongodata:/data/db \
+ -p 27017:27017 \
+ --name mongodb \
+ --restart unless-stopped \
+ -d mongo:3
+ ```
+
+4. You can now access the service from both Windows or Ubuntu at `mongodb://localhost:27017`.
+
+## Installing Node.js and npm
+
+We recommend you install the LTS release for Node.js with a node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating).
+
+Once installed use these commands to install and use the Node.js version as needed
+
+```console
+nvm install --lts
+
+# OR
+# nvm install
+
+nvm install 14
+
+# Usage
+# nvm use
+
+nvm use 12
+```
+
+Node.js comes bundled with `npm`, you can update to the latest versions of `npm` with:
+
+```console
+npm install -g npm@latest
+```
+
+## Set up freeCodeCamp locally
+
+Now that you have installed the pre-requisites, follow [our local setup guide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) to clone, install and setup freeCodeCamp locally on your machine.
+
+> [!WARNING]
+>
+> Please note, at this time the set up for Cypress tests (and related GUI needs) are a work in progress. You should still be able to work on most of the codebase.
+
+## Useful Links
+
+- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org)
+- Frequently asked questions on:
+ - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq)
+ - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs)
diff --git a/docs/i18n/Afrikaans/how-to-use-docker-on-windows-home.md b/docs/i18n/Afrikaans/how-to-use-docker-on-windows-home.md
new file mode 100644
index 0000000000..85ac65a3e3
--- /dev/null
+++ b/docs/i18n/Afrikaans/how-to-use-docker-on-windows-home.md
@@ -0,0 +1,15 @@
+# How to use Docker on Windows Home
+
+There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise.
+
+Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram.
+
+Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation.
+
+If you see messages like
+
+```shell
+bash: change_volumes_owner.sh: No such file or directory
+```
+
+when you `npm run docker:init` this is likely the culprit.
diff --git a/docs/i18n/Afrikaans/how-to-work-on-coding-challenges.md b/docs/i18n/Afrikaans/how-to-work-on-coding-challenges.md
new file mode 100644
index 0000000000..568913de3b
--- /dev/null
+++ b/docs/i18n/Afrikaans/how-to-work-on-coding-challenges.md
@@ -0,0 +1,541 @@
+# How to work on coding challenges
+
+Our goal is to develop a fun and clear interactive learning experience.
+
+Designing interactive coding challenges is difficult. It would be much easier to write a lengthy explanation or to create a video tutorial, and there's a place for those on Medium and YouTube. However, for our core curriculum, we're sticking with what works best for most people - a fully interactive, video game-like experience.
+
+We want campers to achieve a flow state. We want them to build momentum and blast through our curriculum with as few snags as possible. We want them to go into the projects with confidence and gain a wide exposure to programming concepts.
+
+Creating these challenges requires immense creativity and attention to detail. There's plenty of help available. You'll have support from a whole team of contributors to whom you can bounce ideas off and demo your challenges. Stay active in the [contributors room](https://gitter.im/freecodecamp/contributors) and ask lots of questions.
+
+With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come.
+
+The content for each challenge is stored in its own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages.
+
+You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) directory.
+
+## Set up the tooling for the curriculum
+
+Before you work on the curriculum, you would need to set up some tooling to help you test your changes. You can use any option from the below:
+
+- You can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). This is **highly recommended** for regular/repeat contributions. This setup allows you to work and test your changes.
+- Use Gitpod, a free online dev environment. Clicking the button below will start a ready-to-code dev environment for freeCodeCamp in your browser. It only takes a few minutes.
+
+ [](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
+
+- Edit the files on GitHub's interface by clicking the pencil icon for the corresponding file. While this is the quickest way, It is **not recommended**, because you are unable to test your changes on GitHub. If our maintainers conclude that the changes you made need to be tested locally, you would need to follow the methods above instead again.
+
+## Challenge Template
+
+Below is a template of what the challenge markdown files look like currently. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template).
+
+````md
+---
+id: Unique identifier (alphanumerical, MongoDB_id)
+title: Challenge Title
+challengeType: 0
+videoUrl: 'url of video explanation'
+---
+
+## Description
+
+
+A Description of the challenge and what is required to pass
+
+
+## Instructions
+
+
+Instructions about what exactly needs to be done.
+
+
+## Tests
+
+
+
+```yml
+tests:
+ - text: Should return "foo"
+ testString: 'A stringified function possibly using Chai asserts'
+````
+
+
+
+## Challenge Seed
+
+
+
+
+
+```{ext}
+Code displayed in the editor by default.
+
+This is a required section for the challenge.
+```
+
+
+
+### Before Test
+
+
+
+```{ext}
+Optional Test setup code.
+```
+
+
+
+### After Test
+
+
+
+```{ext}
+Optional Test tear down code.
+```
+
+
+
+
+
+## Solution
+
+
+
+```{ext}
+// solution required
+```
+
+
+
+````
+
+> [!NOTE]
+>
+> 1. In the above sections, examples of `{ext}` are:
+>
+> - `html` - HTML/CSS
+> - `js` - JavaScript
+> - `jsx` - JSX
+>
+> 2. For the `Tests` section above, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression using which could use Chai asserts.
+
+## Numbering Challenges
+
+Every challenge needs an `id`. If you don't specify one, then MongoDB will create a new random one when it saves the data; however, we don't want it to do that, since we want the challenge ids to be consistent across different environments (staging, production, lots of different developers, etc.).
+
+To generate a new one in a shell (assuming MongoDB is running separately):
+
+1. Run `mongo` command.
+2. Run `ObjectId()` command.
+
+For example:
+
+```bash
+$ mongo
+MongoDB shell version v3.6.1
+connecting to: mongodb://127.0.0.1:27017
+MongoDB server version: 3.4.10
+...
+$ ObjectId()
+ObjectId("5a474d78df58bafeb3535d34")
+````
+
+The result is a new id, for example `5a474d78df58bafeb3535d34` above.
+
+Once you have your id, put it into the markdown file as the `id` field at the top, e.g.
+
+```yml
+---
+id: 5a474d78df58bafeb3535d34
+title: Challenge Title
+```
+
+## Naming challenges
+
+Naming things is hard. We've made it easier by imposing some constraints.
+
+All challenge titles should be explicit and should follow this pattern:
+
+\[verb\]\[object clause\]
+
+Here are some example challenge names:
+
+- Use Clockwise Notation to Specify the Padding of an Element
+- Condense arrays with .reduce
+- Use Bracket Notation to Find the First Character in a String
+
+## Challenge descriptions/instructions
+
+Sentences should be clear and concise with minimal jargon. If used, jargon should be immediately defined in plain English.
+
+Keep paragraphs short (around 1-4 sentences). People are more likely to read several short paragraphs than a wall of text.
+
+Challenge text should use the second person ("you") to help to give it a conversational tone. This way the text and instructions seem to speak directly to the camper working through the challenge. Try to avoid using the first person ("I", "we", "let's", and "us").
+
+Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article.
+
+You can add diagrams if absolutely necessary.
+
+Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems.
+
+Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in the challenges.
+
+- JavaScript (capital letters in "J" and "S" and no abbreviations)
+- Node.js
+- Front-end development (adjective form with a dash) is when you're working on the front end (noun form with no dash). The same goes with "back end", "full stack", and many other compound terms.
+
+### The 2-minute rule
+
+Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass.
+
+If it takes longer than two minutes to complete the challenge, you have two options:
+
+- Simplify the challenge, or
+- Split the challenge into two challenges.
+
+The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straight-forward.
+
+We track how long it takes for campers to solve changes and use this information to identify challenges that need to be simplified or split.
+
+### Modularity
+
+Each challenge should teach exactly one concept, and that concept should be apparent from the challenge's name.
+
+We can reinforce previously covered concepts through repetition and variations - for example, introducing h1 elements in one challenge, then h3 elements a few challenges later.
+
+Our goal is to have thousands of 2-minute challenges. These can flow together and reiterate previously-covered concepts.
+
+### Formatting challenge text
+
+Here are specific formatting guidelines for challenge text and examples:
+
+- Language keywords go in `` tags. For example, HTML tag names or CSS property names
+- The first instance of a keyword when it's being defined, or general keywords (i.e. "object" or "immutable") go in `` tags
+- References to code parts (i.e. function, method or variable names) should be wrapped in `` tags. See example below:
+- Use parseInt
to convert the variable realNumber
into an integer.
+- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. **Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks.
+
+See example below:
+
+````md
+The following is an example of code:
+
+```{language}
+
+[YOUR CODE HERE]
+
+````
+````
+
+- Additional information in the form of a note should be formatted `Note: Rest of note text...`
+- If multiple notes are needed, then list all of the notes in separate sentences using the format `Notes: First note text. Second note text.`.
+- Use double quotes where applicable
+
+## Writing tests
+
+Challenges should have the minimum number of tests necessary to verify that a camper understands a concept.
+
+Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point.
+
+Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable.
+
+## Formatting seed code
+
+Here are specific formatting guidelines for the challenge seed code:
+
+- Use two spaces to indent
+- JavaScript statements end with a semicolon
+- Use double quotes where applicable
+- Comments made should have a space between the comment characters and the comment themselves
+
+ `// Fix this line`
+
+## Hints and Solutions
+
+Each challenge has a `Get a Hint` button, so a user can access any hints/solutions which have been created for the challenge. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category.
+
+If you find a problem with an existing challenge's hints/solutions topic, you can make suggestions in the [contributors category](https://forum.freecodecamp.org/c/contributors) on the forum. Moderators and users with trust level 3 will review the comments and decide whether or not to include the changes in the corresponding hint/solutions topic.
+
+### Adding new Challenge hints/solutions Topics
+
+Take the following steps when adding a new challenge hints/solutions related topic.
+
+1. Start by following the same steps for creating a new topic but review the next for creating the title.
+2. The title of the topic should start with `freeCodeCamp Challenge Guide: ` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`".
+3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`.
+4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic.
+
+### Guidelines for content of hints and solutions topics
+
+When proposing a solution for a curriculum challenge related Guide topic, the full code must be added. This includes all the original seed code plus any changes needed to pass all the challenge tests. The following template should be used when creating new hints/solutions topics:
+
+````md
+# Challenge Name Goes Here
+
+---
+
+## Problem Explanation
+
+This summarizes what need to be done without just restating the challenge description and/or instructions. This is an optional section
+
+#### Relevant Links
+
+- [Link Text](link_url_goes_here)
+- [Link Text](link_url_goes_here)
+
+---
+
+## Hints
+
+### Hint 1
+
+Hint goes here
+
+### Hint 2
+
+Hint goes here
+
+---
+
+## Solutions
+
+Solution 1 (Click to Show/Hide)
+
+```js
+function myFunc() {
+ console.log('Hello World!');
+}
+````
+
+#### Code Explanation
+
+- Code explanation goes here
+- Code explanation goes here
+
+#### Relevant Links
+
+- [Link Text](link_url_goes_here)
+- [Link Text](link_url_goes_here)
+
+
+````
+
+## Testing Challenges
+
+Before you [create a pull request](how-to-open-a-pull-request.md) for your changes, you need to validate that the changes you have made do not inadvertently cause problems with the challenge.
+
+1. To test all challenges run the below command from the root directory
+
+````
+npm run test:curriculum
+```
+
+2. You can also test a block or a superblock of challenges with these commands
+
+```
+npm run test:curriculum --block='Basic HTML and HTML5'
+```
+
+```
+npm run test:curriculum --superblock=responsive-web-design
+```
+
+You are also able to test one challenge individually by performing the following steps:
+
+1. Switch to the `curriculum` directory:
+
+ ```
+ cd curriculum
+ ```
+
+2. Run the following for each challenge file for which you have changed:
+
+ ```
+ npm run test -- -g 'the full English title of the challenge'
+ ```
+
+Once you have verified that each challenge you've worked on passes the tests, [please create a pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md).
+
+> [!TIP]
+> You can set the environment variable `LOCALE` in the `.env` to the language of the challenge(s) you need to test.
+>
+> The currently accepted values are `english` and `chinese`, with `english` being set by default.
+
+## Upcoming Challenge Template
+
+The challenge template in the process of being updated to a cleaner, less nested structure. This has not been completely finalized, but the following should close to the final structure:
+
+````mdx
+
+---
+id: Unique identifier (alphanumerical, MongoDB_id)
+title: 'Challenge Title'
+challengeType: Integer, defined in `client/utils/challengeTypes.js`
+videoUrl: 'url of video explanation'
+forumTopicId: 12345
+---
+
+import Script from './script.mdx';
+
+## --step-description--
+
+Description text, in markdown
+
+```html
+
+ example code
+
+```
+
+## --step-hints--
+
+![test-id-1]
+
+There will be an arbitrary number of triples of ids, instructions (in markdown) and code blocks.
+
+```js
+Code for test one
+```
+
+![test-id-2]
+
+More instructions in markdown syntax
+
+```js
+More code
+```
+
+## --step-seed--
+
+### --before-user-code--
+
+```lang
+Code evaluated before the user’s
+```
+
+### --after-user-code--
+
+```lang
+Code evaluated after the user’s, and just before the tests
+```
+
+### --seed-content--
+
+![index-html]
+
+```html
+Some html
+```
+
+```css
+Some css
+```
+
+```js
+Some js
+```
+
+![index-js]
+
+
+
+
+
+ --solution-marker--
+
+
+
+
+
+ Exactly the same as the seeds section
+
+
+
+ --next-solution-marker
+
+
+
+
+
+ Same again
+
+
+
+ --question-marker--
+
+
+
+ --text-marker--
+
+
+
+
+
+ The question would go here (only used for video challenges)
+
+
+
+ --answers-marker--
+
+
+
+
+
+ Answer 1
+
+
+
+
+
+ Answer 2
+
+
+
+
+
+ More answers
+
+
+
+ --solution-marker--
+
+
+
+
+
+ \
+
+
+
+
+
+ ````
+
+
+
+ Useful Links
+
+
+
+
+
+ Creating and Editing Challenges:
+
+
+
+
+
+ -
+
+ Challenge types - what the numeric challenge type values mean (enum).
+
+
+
+
+ -
+
+ Contributing to FreeCodeCamp - Writing ES6 Challenge Tests - a video following Ethan Arrowood as he contributes to the old version of the curriculum.
+
+
+
+
diff --git a/docs/i18n/Afrikaans/how-to-work-on-the-docs-theme.md b/docs/i18n/Afrikaans/how-to-work-on-the-docs-theme.md
new file mode 100644
index 0000000000..8de043746f
--- /dev/null
+++ b/docs/i18n/Afrikaans/how-to-work-on-the-docs-theme.md
@@ -0,0 +1,40 @@
+# How to work on the docs theme
+
+> [!NOTE] A quick reminder that you do not need to setup anything for working on the content for the documentation site.
+>
+> To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). When your changes are merged, it will be made available automatically at the documentation site.
+
+## Structure of the docs website
+
+The site is generated using [`docsify`](https://docsify.js.org), and served using GitHub pages.
+
+Typically you would not need to change any configuration or build the site locally. In case you are interested, here is how it works:
+
+- The homepage's source for this site is available in [`docs/index.html`](index.html).
+- We serve this file as a SPA using `docsify` and GitHub Pages.
+- The `docsify` script generates the content of `markdown` files in `docs` directory on demand.
+- The homepage is generated from the [`_coverpage.md`](_coverpage.md).
+- the sidebar navigation is generated from [`_sidebar.md`](_sidebar.md).
+
+## Serving the documentation site locally
+
+Clone freeCodeCamp:
+
+```sh
+git clone https://github.com/freeCodeCamp/freeCodeCamp.git
+docsify serve docs
+```
+
+Install `docsify`:
+
+```sh
+npm install -g docsify
+```
+
+and serve the `/docs` directory
+
+```sh
+docsify serve docs
+```
+
+Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run `npm run docs:serve` from the root of the repo.
diff --git a/docs/i18n/Afrikaans/how-to-work-on-the-news-theme.md b/docs/i18n/Afrikaans/how-to-work-on-the-news-theme.md
new file mode 100644
index 0000000000..e878e67fd7
--- /dev/null
+++ b/docs/i18n/Afrikaans/how-to-work-on-the-news-theme.md
@@ -0,0 +1,10 @@
+
+
+[remote-markdown-url](https://raw.githubusercontent.com/freeCodeCamp/news-theme/master/CONTRIBUTING.md)
\ No newline at end of file
diff --git a/docs/i18n/Afrikaans/index.md b/docs/i18n/Afrikaans/index.md
new file mode 100644
index 0000000000..11297b4a0d
--- /dev/null
+++ b/docs/i18n/Afrikaans/index.md
@@ -0,0 +1,45 @@
+Die [freeCodeCamp.org](https://freecodecamp.org) gemeenskap is moontlik vanweë duisende vriendelike vrywilligers soos jy. Ons welkom enige en al gemeenskapsbydraes, en ons is opgewonde om jou aan boord te verwelkom.
+
+> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We enforce it strictly across our community. We want contributing to freeCodeCamp.org to be a safe and inclusive experience for everyone.
+
+Happy contributing.
+
+You are welcome to:
+
+- Create, update and fix bugs in our [coding challenges](#coding-challenges).
+- Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform).
+- _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages.
+
+Have questions? Head over to [these FAQs](/FAQ.md) where we answer some common queries about contributing.
+
+## Coding Challenges
+
+All our coding challenges are curated by the community, bringing in expert knowledge from volunteers like you.
+
+You can help expand them and make their wording better. You can also update the user stories to explain the concept better or remove redundant ones and improve the challenge tests to make them more accurately test people's code.
+
+**If you're interested in improving these coding challenges, here's [how to work on coding challenges](how-to-work-on-coding-challenges.md).**
+
+## Learning Platform
+
+Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries, including but not limited to, Node.js, MongoDB, LoopBack, OAuth 2.0, React, Gatsby, Webpack, and more.
+
+Broadly,
+
+- We have a Node.js based API server.
+- A set of React-based client applications.
+- A script that we use to evaluate our front-end projects.
+
+Contributing to this requires some understanding of APIs, ES6 Syntax, and a lot of curiosity.
+
+Essentially, we expect basic familiarity with some of the aforementioned technologies, tools, and libraries. With that being said, you are not required to be an expert on them to contribute.
+
+**If you want to help us improve our codebase, you can either use Gitpod, a free online dev environment**
+
+[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
+
+(Starts a ready-to-code dev environment for freeCodeCamp in your browser.)
+
+OR
+
+**you can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.**
diff --git a/docs/i18n/Arabic/FAQ.md b/docs/i18n/Arabic/FAQ.md
new file mode 100644
index 0000000000..b7e06a9286
--- /dev/null
+++ b/docs/i18n/Arabic/FAQ.md
@@ -0,0 +1,101 @@
+### أنا جديد على GitHub و Open Source، أين يجب أن أبدأ؟
+
+اقرأ ["كيفية المساهمة في دليل المصدر المفتوح"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). إنه مورد جامع من أول مشاريع ومبادئ توجيهية ملائمة للتوقيت
+
+### هل يمكنني ترجمة المنهج التعليمي لـ FreCodeCamp؟
+
+سنقوم بإطلاق جهود التوطين على FreCodeCamp بدءاً ب **الصينية** أولاً.
+
+ونحن نعتزم جعل المنهاج الدراسي متاحا بمزيد من اللغات، ولكن لا يمكننا الالتزام بأي مواعيد نهائية حتى الآن. وتؤدي عدة قيود تشغيلية مثل الموظفين والمساهمين النشطين وتكاليف حواسيب الخدمة دورا في دفع جهود التدويل (18 سنة).
+
+ونحن نعتزم البدء في بذل جهود في إطار برنامج العمل 18n بهذه اللغات: العربية والبرتغالية. الروسية والإسبانية (دون ترتيب محدد) بعد أن أصدرنا المنهج الدراسي باللغة الصينية.
+
+**لماذا تركز على المناهج الصينية أولاً؟**
+
+الصين هي أكبر المناطق الديمغرافية، في جمهورنا غير الناطقين بالإنجليزية الأصلية. حاليا، لدينا مئات الآلاف من المستخدمين باستخدام نسخة قديمة من المنصة. والتركيز على المنهج الدراسي الصيني سيعطينا تقديرا للسوقيات المشاركة في الـ i18n.
+
+وسوف نركز على أمريكا اللاتينية بوصفها المنطقة الديمغرافية للبرتغالية والإسبانية.
+
+وليس لدينا أي خطط لـ i18n في المستقبل المنظور لأي لغة أخرى غير ما ورد أعلاه.
+
+ونحن لا نشجعكم على العمل بشأن الـ i18 باللغات المذكورة أعلاه. ويمكننا أن نقبل طلبات السحب دون أن نتوقع أي مواعيد زمنية لنشر القوات.
+
+### كيف يمكنني الإبلاغ عن خطأ جديد؟
+
+إذا كنت تعتقد أنك وجدت خطأ، اقرأ أولاً مقالة ["ساعدني في العثور على بوج"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) واتبع تعليماتها.
+
+إذا كنت واثقا من أنه خطأ جديد، قم بالمضي قدما و أنشئ مشكلة GitHub جديدة. تأكد من تضمين أكبر قدر ممكن من المعلومات حتى نتمكن من تكرار الخطأ. لدينا نموذج مشكلة محدد مسبقاً لمساعدتك من خلال هذا.
+
+يرجى ملاحظة أنه سيتم إغلاق أي مشاكل تبحث عن مساعدة في الترميز في التحدي. أما تعقب القضايا فيتعلق حصراً بالقضايا والمناقشات ذات الصلة بالترادف. كلما كان هناك شك، يجب عليك [طلب المساعدة في المنتدى](https://forum.freecodecamp.org) قبل إعداد التقرير.
+
+### كيف يمكنني الإبلاغ عن مسألة أمنية؟
+
+الرجاء عدم إنشاء مشاكل GitHub للمشاكل الأمنية. بدلاً من ذلك، يرجى إرسال بريد إلكتروني إلى `security@freecodecamp.org` وسوف ننظر فيه فوراً.
+
+### أنا طالب، هل يمكنني أو فريقنا العمل على ميزة للائتمانات الأكاديمية؟
+
+نعم، بالتأكيد.
+
+وفي حين أننا منفتحون على جميع المساهمات، يرجى ملاحظة أننا غير قادرين على الالتزام بأي جداول زمنية قد تكون مطلوبة في الكلية أو الجامعة الخاصة بك. ونحن نتلقى العديد من طلبات السحب وإسهامات الرموز من مطوري المتطوعين، ونحن نحترم وقتهم وجهودهم. ولن يكون بوسعنا أن نولي أي رأي رسمي أي اهتمام خاص ليكون منصفا للجميع.
+
+ونطلب منكم أن تخطططوا مسبقا وأن تعملوا على وضع هذه الميزة نصب أعيننا.
+
+### ماذا تعني هذه التسميات المختلفة الموسومة على المشكلات؟
+
+مشرفو التعليمات البرمجية [مقارنة](https://en.wikipedia.org/wiki/Software_bug#Bug_management) يصدرون الطلبات ويسحبون الطلبات بناء على أولويتهم وشدتهم وعوامل أخرى. يمكنك [العثور على مسرد كامل لمعانيهم هنا](https://github.com/freecodecamp/freecodecamp/labels).
+
+### أين أبدأ إذا أردت أن أعمل بشأن إحدى القضايا؟
+
+يجب أن تمر عبر [**`المساعدة المطلوبة`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) أو [**`المؤقت الأول فقط`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) من أجل نظرة عامة سريعة لما هو متاح لك للعمل عليه.
+
+> [!تلميح] **`ساعد`** المشكلات المطلوبة ، ولا تحتاج إلى البحث عن إذن قبل العمل عليها. ومع ذلك، فإن المشكلات مع **`التسمية الأولى فقط`** محفوظة للأشخاص الذين لم يساهموا في رمز FreCodeCamp من قبل. وإذا كانت هذه المسائل تفتقر إلى الوضوح بشأن ما ينبغي عمله، فلا تتردد في طرح الأسئلة في التعليقات.
+
+### وجدت طابعاً، هل يجب أن أبلغ عن مشكلة قبل أن أتمكن من تقديم طلب سحب؟
+
+بالنسبة للطباعيات وغيرها من التغييرات في الصياغة، يمكنك فتح طلبات السحب مباشرة دون إنشاء مشكلة أولاً. أما القضايا فتتعلق بقدر أكبر بمناقشة المشاكل الأكبر المرتبطة بالجوانب البرمجية أو الهيكلية للمناهج الدراسية.
+
+ومع ذلك، يرجى ذكر التفاصيل، والسياق، وما إلى ذلك في مجال وصف طلب السحب لمساعدتنا على فهم واستعراض مساهمتك حتى من أجل إجراء تغييرات طفيفة.
+
+### كيف أحصل على مشكلة تم تعيينها لي؟
+
+وعادة ما لا نحيل المسائل إلى أي شخص آخر غير المساهمين منذ وقت طويل لتجنب العروض الغامضة التي لا تظهر على الإطلاق. وبدلا من ذلك، نتبع السياسة التالية لتكون عادلة للجميع:
+
+1. يفضل دمج طلب السحب الأول لأي مشكلة.
+2. في حالة طلبات السحب المتعددة لنفس المشكلة، نعطي الأولوية لجودة الرمز في طلبات السحب .
+ - هل قمت بإدراج اختبارات؟
+ - هل حصلت على جميع الاستخدامات؟
+ - هل تأكد من مرور جميع الاختبارات، وأكدت أن كل شيء يعمل محليا؟
+3. وأخيرا، نحن نؤيد طلبات السحب التي تتبع مبادئنا التوجيهية الموصى بها.
+ - هل اتبعت قائمة طلب السحب؟
+ - هل قمت بتسمية عنوان طلب السحب الخاص بك؟
+
+أنت لست بحاجة إلى أي إذن للمشكلات التي تم وضع علامة عليها `المساعدة المطلوبة` أو `المؤقت الأول فقط` كما هو موضح سابقاً.
+
+اتبع المبادئ التوجيهية بعناية وفتح طلب الجذب.
+
+### وأنا عالقة بشأن شيء غير مدرج في هذه الوثائق.
+
+**لا تتردد في طلب المساعدة في:**
+
+- The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors).
+- The public `Contributors` [chat room on Gitter](https://gitter.im/FreeCodeCamp/Contributors).
+- The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS).
+
+ونحن متحمسون لمساعدتك في المساهمة في أي من المواضيع التي تودون العمل بشأنها. لا تتردد في طرح أسئلة علينا بشأن المواضيع ذات الصلة، وسوف يسعدنا أن نوضح ذلك. تأكد من البحث عن استفسارك قبل نشر استعلام جديد.
+
+كن مهذباً وصبراً. مجتمعنا من المتطوعين والمديرين دائمًا ما يدور لإرشادك من خلال الاستفسارات الخاصة بك.
+
+**المساعدة الإضافية**
+
+إذا كان لديك استفسارات حول المكدس ، هندسة الكود ، لا تتردد في التواصل مع فريق موظفينا:
+
+| الموظفون | إرسال رسالة في المنتدى |
+|:-------------------- |:---------------------------------------------------------------------------- |
+| مروجيش محباترا | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) |
+| أحمد عبد الشاب | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) |
+| Kristofer Koishigawa | [@scissorsneedfoodtoo](https://forum.freecodecamp.org/u/scissorsneedfoodtoo) |
+| توم موندلوك | [@moT01](https://forum.freecodecamp.org/u/moT01) |
+| أوليفر إيتون ويليامز | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) |
+| رانديل داوسون | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) |
+
+**يمكنك إرسال بريد إلكتروني لموظفي المطور في: `dev[at]freecodecamp.org`**
diff --git a/docs/i18n/Arabic/_sidebar.md b/docs/i18n/Arabic/_sidebar.md
new file mode 100644
index 0000000000..0a4f679f4c
--- /dev/null
+++ b/docs/i18n/Arabic/_sidebar.md
@@ -0,0 +1,36 @@
+- **بدء العمل**
+ - [مقدمة](/index.md "المساهمة في مجتمع FreCodeCamp.org")
+ - [الأسئلة المتكررة](/FAQ.md)
+- **مساهمة الرمز**
+- - [إعداد FreCodeCamp محليا](/how-to-setup-freecodecamp-locally.md)
+ - [فتح طلب سحب](/how-to-open-a-pull-request.md)
+ - [العمل على تحديات البرمجة](/how-to-work-on-coding-challenges.md)
+ - [العمل المتعلق بتحديات الفيديو](/how-to-help-with-video-challenges.md)
+ - [العمل المتعلق بموضوع الأخبار](/how-to-work-on-the-news-theme.md)
+ - [العمل في موضوع المستندات](/how-to-work-on-the-docs-theme.md)
+- **أدلة اختيارية**
+ - [التقط رسائل البريد الإلكتروني الصادرة محليا](/how-to-catch-outgoing-emails-locally.md)
+ - [إعداد freeCodeCamp على WSL](/how-to-setup-wsl.md)
+
+---
+
+- **中文社区贡献指南**
+ - [成为专栏作者](/i18n/chinese/news-author-application.md)
+ - [文章翻译计划](/i18n/chinese/news-translations.md)
+ - [视频翻译计划](/i18n/chinese/video-translations.md)
+
+---
+
+- **دليل الرحلات الجوية** (للموظفين & موحد)
+ - [دليل المشرف](/flight-manuals/moderator-handbook.md)
+ - [قوالب الرد](/flight-manuals/using-reply-templates.md)
+ - [استعراض DevOps](/devops.md)
+ - [العمل على الخوادم](/flight-manuals/working-on-virtual-machines.md)
+
+---
+
+- **مجتمعنا**
+ - [**GitHub**](https://github.com/freecodecamp/freecodecamp)
+ - [**منتدى الخطاب**](https://freecodecamp.org/forum/c/contributors)
+ - [**دردشة Gitter**](https://gitter.im/FreeCodeCamp/Contributors)
+ - [**Discord Server**](https://discord.gg/pFspAhS)
diff --git a/docs/i18n/Arabic/devops.md b/docs/i18n/Arabic/devops.md
new file mode 100644
index 0000000000..f836743ee8
--- /dev/null
+++ b/docs/i18n/Arabic/devops.md
@@ -0,0 +1,227 @@
+# عمليات المطور في freeCodeCamp.org
+
+هذا الدليل سيساعدك على فهم مكدس البنية التحتية الخاص بنا وكيف نحافظ على المنصات الخاصة بنا. ورغم أن هذا الدليل لا يتضمن تفاصيل شاملة عن جميع العمليات، فإنه يمكن استخدامه كمرجع لفهمكم للنظم.
+
+دعونا نعلم، إذا كان لديكم تغذية مرتدة أو استفسارات، وسيكون من دواعي سرورنا أن نوضح ذلك.
+
+## كيف يمكننا أن نبني ونختبر وننشر الكود البرمجي؟
+
+يتم بناء هذا المستودع بشكل مستمر واختباره ونشره في **مجموعات منفصلة من البنية التحتية (سيرفرات وقواعد البيانات وCDN، وما إلى ذلك)**.
+
+وينطوي ذلك على ثلاث خطوات يتعين اتباعها بالتسلسل:
+
+1. يتم دمج التغييرات الجديدة (الإصلاحات والميزات) في فرع التطوير الأساسي الخاص بنا (`الرئيسية`) عن طريق طلبات السحب.
+2. وتجري هذه التغييرات من خلال سلسلة من الاختبارات المؤتمتة.
+3. وبمجرد اجتياز الاختبارات نعلن عن التغييرات (أو تحديثها إذا اقتضى الأمر) لنشرها على بنيتنا التحتية.
+
+#### بناء الشريط البرمجي - رسم خرائط فروع Git للنشر.
+
+عادةً، [`سيد`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (فرع التطوير الافتراضي) يدمج في [`تجهيز الإنتاج`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) فرع مرة واحدة في اليوم ويطلق في بنية تحتية معزولة.
+
+هذا هو الإصدار الوسيط للمطورين والمساهمين المتطوعين. كما أنه يعرف باسم "الإنتظار" أو "بيتا".
+
+إنه مطابق لبيئتنا الإنتاجية الحية في `freeCodeCamp.org`، بخلاف ذلك باستخدام مجموعة منفصلة من قواعد البيانات، الخوادم، وكلاء الويب، إلخ. تتيح لنا هذه العزلة اختبار التطوير المستمر والميزات في "الإنتاج" مثل السيناريو، دون التأثير على المستخدمين المنتظمين للمنصات الرئيسية لـ freeCodeCamp.org.
+
+مرة واحدة فريق المطور [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) سعيد بالتغييرات على منصة التجهيز ، يتم نقل هذه التغييرات كل بضعة أيام إلى فرع [`الإنتاج الحالي`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current)
+
+هذا هو الإصدار النهائي الذي ينقل التغييرات إلى منصات الإنتاج لدينا على freeCodeCamp.org.
+
+#### اختبار التغييرات - اختبار التكامل وقبول المستخدم.
+
+نحن نستخدم مختلف مستويات اختبار التكامل والقبول للتحقق من جودة الشفرة. تتم جميع اختباراتنا من خلال برمجيات مثل [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) و [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp).
+
+لدينا اختبارات وحدة لاختبار حلول التحدي الخاصة بنا، واجهات برمجة تطبيقات الخادم وواجهة مستخدم العميل. هذه تساعدنا على اختبار التكامل بين المكونات المختلفة.
+
+> [!ملحوظة] نحن أيضا في عملية كتابة اختبارات المستخدم النهائي التي ستساعد في تكرار سيناريوهات العالم الحقيقي مثل تحديث البريد الإلكتروني أو إجراء مكالمة إلى خدمات API أو طرف ثالث.
+
+وتساعد هذه الاختبارات معا في منع المشاكل من تكرار نفسها والتأكد من أننا لا ندخل خلل أثناء العمل على خلل آخر أو ميزة أخرى.
+
+#### نشر التغييرات - دفع التغييرات إلى الخوادم.
+
+لقد قمنا بتكوين برنامج التوصيل المستمر لدفع التغييرات إلى خوادم التطوير والإنتاج لدينا.
+
+وبمجرد دفع التغييرات إلى فروع الإفراج المحمية، يبدأ تشغيل خط أنابيب البناء تلقائياً للفرع. وخطوط أنابيب البناء مسؤولة عن بناء الأعمال الفنية وإبقائها في مخزن بارد لاستخدامها في وقت لاحق.
+
+ويمضي خط أنابيب البناء لتفعيل خط أنابيب الإفراج المقابل إذا أنجز عملية تشغيل ناجحة. وخطوط أنابيب الإصدار مسؤولة عن جمع فنون البناء، ونقلها إلى الخوادم، والسير على قيد الحياة.
+
+حالة الإنشاءات والإصدارات [متاحة هنا](#build-test-and-deployment-status).
+
+## تنشيط البناء والاختبار والنشر.
+
+وفي الوقت الراهن، لا يستطيع سوى الأعضاء في فريق المطور الدفع إلى فروع الإنتاج. التغييرات في فروع `الإنتاج *` يمكن أن تهبط فقط عن طريق الدمج السريع للأمام إلى [`أعلى`](https://github.com/freeCodeCamp/freeCodeCamp).
+
+> [!ملحوظة] في الأيام القادمة سنقوم بتحسين هذا التدفق ليتم عن طريق طلبات الجذب، لتحسين إدارة الوصول والشفافية.
+
+### دفع التغييرات إلى التطبيقات المرحلية.
+
+1. تكوين أجهزة التحكم الخاصة بك بشكل صحيح.
+
+ ```sh
+ git البعيد -v
+ ```
+
+ **النتائج:**
+
+ ```
+ الأصل git@github.com:raisedadead/freeCodeCamp.git (fetch)
+ الأصل git@github.com:raisedadead/freeCodeCamp.git (push)
+ upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch)
+ upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push)
+ ```
+
+2. تأكد من أن فرع `الرئيسي` الخاص بك نقي وفي تزامن مع البث.
+
+ ```sh
+ git قم بالدفع الرئيسي
+ git يجلب --كل --prune
+ git reset --hard upstream/master
+ ```
+
+3. تحقق من أن ترافيس سي يقوم بتمرير فرع `الرئيسي` للتبسيط.
+
+ يجب أن تكون اختبارات [الدمج المستمر](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) خضراء و باسينغ `لفرع`.
+
+ التحقق من الحالة على Travis CI (لقطة الشاشة)
+
+ 
+
+
+ إذا فشل هذا يجب عليك التوقف والتحقيق في الأخطاء.
+
+4. تأكد من أنك قادر على بناء المستودع محلياً.
+
+ ```
+ npm تشغيل نظيف وتطوير
+ ```
+
+5. نقل التغييرات من `الرئيسي` إلى `تجهيز الإنتاج` عبر دمج سريع للأمام
+
+ ```
+ git الدفع بالإنتاج - مرحلة التجهيز
+ git master دمج
+ git push upstream
+ ```
+
+ > [!ملاحظة] لن تكون قادراً على فرض الدفع وإذا قمت بإعادة كتابة السجل على أي حال فإن هذه الأوامر ستخطأ.
+ >
+ > إذا فعلوا ذلك، ربما تكون قد فعلت شيئا خاطئا وينبغي أن تبدأ من جديد.
+
+الخطوات المذكورة أعلاه ستفعل تلقائياً تشغيل على خط أنابيب البناء لفرع `الإنتاج الحالي`. بمجرد أن تصبح أداة البناء جاهزة، فإنها ستؤدي إلى تشغيل على خط أنابيب الإطلاق.
+
+يتم تشغيل خط أنابيب الإطلاق تلقائياً عند توفر أداة جديدة من خط أنابيب البناء المتصل. بالنسبة لمنصات التجهيز، هذه العملية لا تنطوي على موافقة يدوية ويتم دفع التحف إلى خوادم العميل CDN و API.
+
+> [!تلميح: تقديرات] عادة ما يستغرق تشغيل البناء 20-25 دقيقة لإكمال عملية الإصدار التي تستغرق 15-20 دقيقة للعميل، و ~5-10 دقائق لـ API لتكون متاحة على قيد الحياة. من دفع التعليمات البرمجية إلى الحياة على منصات التجهيز تستغرق العملية بأكملها **~35-45 دقيقة** في المجموع.
+
+### دفع التغييرات إلى تطبيقات الإنتاج.
+
+وهذه العملية هي في معظمها نفس منصات التجهيز، مع إجراء عدد قليل من عمليات التحقق الإضافية. هذا فقط لتأكيد، نحن لا نكسر أي شيء على FreCodeCamp.org الذي يمكنه رؤية مئات المستخدمين يستخدمونه في أي لحظة.
+
+| لا تقم بتنفيذ هذه الأوامر إلا إذا تحققت من أن كل شيء يعمل على منصة التجهيز. لا يجب عليك تجاوز أو تخطي أي اختبار عند التجهيز قبل المضي قدماً. |
+|:-------------------------------------------------------------------------------------------------------------------------------------------- |
+| |
+
+
+1. تأكد من أن فرع `تجهيز الإنتاج` الخاص بك هو فرع نقدي ومتزامن مع الجزء العلوي.
+
+ ```sh
+ git الخروج من الإنتاج وتجهيز
+ git جلب --كل --prune
+ git إعادة تعيين --upstream/production-packging
+ ```
+
+2. نقل التغييرات من `الإنتاج التجهيز` إلى `الإنتاج الحالي` عبر دمج سريع للأمام
+
+ ```
+ git دفع الانتاج-الحالي
+ git دمج الانتاج - التجهيز
+ git push upstream
+ ```
+
+ > [!ملاحظة] لن تكون قادراً على فرض الدفع وإذا قمت بإعادة كتابة السجل على أي حال فإن هذه الأوامر ستخطأ.
+ >
+ > إذا فعلوا ذلك، ربما تكون قد فعلت شيئا خاطئا وينبغي أن تبدأ من جديد.
+
+الخطوات المذكورة أعلاه ستفعل تلقائياً تشغيل على خط أنابيب البناء لفرع `انتاج - تجهيز` بمجرد اكتمال البناء، يتم حفظ التحف كملفات `.zip` في وحدة تخزين باردة لاسترجاعها واستخدامها لاحقاً. بمجرد أن تصبح أداة البناء جاهزة، فإنها ستؤدي إلى تشغيل على خط أنابيب الإطلاق.
+
+> [!تلميح: تقديرات] عادة ما يستغرق تشغيل البناء 20-25 دقيقة لإكماله.
+
+**خطوات إضافية لعمل الموظفين**
+
+يتم تشغيل إحدى عمليات الإصدار، سيتلقى أعضاء فريق الموظفين المطورين رسالة إلكترونية يدوية للتدخل. يمكنهم إما _الموافقة على_ أو _رفض_ تشغيل الإصدار.
+
+إذا كانت التغييرات تعمل بشكل جيد وتم اختبارها على منصة التجهيز، فيمكن الموافقة عليها. ويجب منح الموافقة في غضون 4 ساعات من تاريخ إطلاق الإصدار قبل أن يتم رفضها تلقائياً. ويمكن للموظفين أن يعيدوا تحريك عملية الإفراج يدويا لطلبات الترحيل المرفوضة، أو أن ينتظروا الدورة التالية من عملية الترحيل.
+
+لاستعمال الموظفين:
+
+| تحقق من بريدك الإلكتروني للحصول على رابط مباشر أو [انتقل إلى لوحة تحكم الإصدار](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) بعد اكتمال تشغيل البناء. |
+|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| |
+
+
+وبمجرد موافقة أحد الموظفين على الإصدار، فإن خط الأنابيب سيدفع التغييرات مباشرة إلى خوادم CDN و API الخاصة بإنتاج freeCodeCamp.org. عادة ما يستغرق ~15-20 دقيقة للعملاء، و ~5 دقائق لخوادم API لتكون متاحة على قيد الحياة.
+
+> [!تلميح: تقديرات] عملية الإصدار تستغرق عادة 15-20 دقيقة لكل نموذج من نماذج العميل، و ~5-10 دقائق لكل نموذج API لتكون متاحة للحياة. من دفع التعليمات البرمجية إلى أن تكون حية على منصات الإنتاج تستغرق العملية بأكملها **~90-120 دقيقة** في المجموع (بدون حساب وقت الانتظار للحصول على موافقة الموظفين).
+
+## بناء واختبار ونشر حالة
+
+وفيما يلي الاختبار الحالي وحالة البناء والنشر لهذا الدماغ.
+
+| نوع | فرع | الحالة | لوحة التحكم |
+|:--------------- |:---------------------------------------------------------------------------------------- |:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------------ |
+| اختبار CI | [`سيد`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) |  | [الذهاب إلى لوحة التحكم الحالة](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
+| اختبار CI | [`انتاج التجهيز`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) |  | [الذهاب إلى لوحة التحكم الحالة](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
+| بناء خط أنابيب | [`انتاج التجهيز`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [الذهاب إلى لوحة التحكم الحالة](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) |
+| إصدار خط أنابيب | [`انتاج التجهيز`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [الذهاب إلى لوحة التحكم الحالة](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
+| اختبار CI | [`الانتاج-الحالي`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) |  | [الذهاب إلى لوحة التحكم الحالة](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
+| بناء خط أنابيب | [`الانتاج-الحالي`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [الذهاب إلى لوحة التحكم الحالة](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) |
+| إصدار خط أنابيب | [`الانتاج-الحالي`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [الذهاب إلى لوحة التحكم الحالة](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
+
+## الوصول المبكر واختبار بيتا
+
+نحن نرحب بك لاختبار هذه الإصدارات في وضع **"اختبار تجريبي عام"** والحصول على الوصول المبكر إلى الميزات القادمة إلى المنصات. أحياناً يشار إلى هذه الميزات/التغييرات باسم **التالي، بيتا، الإنتخاب،** إلخ.
+
+إسهاماتك عن طريق الإفادة المرتدة وتقارير الإصدار سوف تساعدنا في إنشاء منصات الإنتاج في `freeCodeCamp. rg` أكثر **مرونة**و **ثابت** و **مستقر** للجميع.
+
+نشكرك على الإبلاغ عن الأخطاء التي تواجهك ومساعدتك في جعل CodeCamp.org أفضل. أنت صخر!
+
+### تحديد النسخة القادمة من المنصات
+
+يتوفر حاليا إصدار اختبار تجريبي عام في:
+
+
+
+> NoTE] اسم النطاق مختلف عن **`freeCodeCamp.org`**. وهذا متعمد لمنع فهرسة محرك البحث وتجنب اللبس للمستخدمين المنتظمين للمنصة.
+
+### تحديد النسخة الحالية من المنصات
+
+**النسخة الحالية من المنصة متوفرة دائما في [`freeCodeCamp.org`](https://www.freecodecamp.org).**
+
+يدمج فريق إدارة الإنتاج التغييرات من فرع `التجهيز الإنتاجي` إلى `التيار الإنتاجي` عند تحرير التغييرات. يجب أن يكون الالتزام الأعلى ما ترونه مباشرة على الموقع.
+
+يمكنك تحديد النسخة الدقيقة المنشورة عن طريق زيارة سجلات البناء والنشر المتاحة في قسم الحالة. بدلاً من ذلك، يمكنك أيضاً ربطنا في [غرفة الدردشة المساهمين](https://gitter.im/FreeCodeCamp/Contributors) لتأكيدها.
+
+### القيود المعروفة
+
+هناك بعض القيود المعروفة والمقايضات عند استخدام الإصدار التجريبي من المنصة.
+
+- #### جميع البيانات / التقدم الشخصي على هذه المنصات التجريبية `لن يتم حفظها أو نقلها` إلى الإنتاج.
+
+ **المستخدمين على إصدار بيتا سيكون لديهم حساب منفصل عن الإنتاج.** النسخة التجريبية تستخدم قاعدة بيانات منفصلة ماديا عن الإنتاج. وهذا يعطينا القدرة على منع أي خسارة عرضية للبيانات أو التعديلات. قد يقوم فريق ديف بتطهير قاعدة البيانات على نسخة بيتا هذه حسب الحاجة.
+
+- #### لا توجد ضمانات بشأن الوقت الإضافي للمنصات التجريبية وموثوقيتها.
+
+ ومن المتوقع أن يكون الانتشار متكررا ومتكررا بسرعة، وأحيانا عدة مرات في اليوم. ونتيجة لذلك، سيكون هناك توقف غير متوقع في بعض الأحيان أو وظائف معطلة على النسخة التجريبية.
+
+- #### لا ترسل المستخدمين المنتظمين إلى هذا الموقع كتدبير لتأكيد إصلاح
+
+ وموقع بيتا كان ولا يزال دائما يتمثل في زيادة التنمية والاختبار المحليين، لا شيء آخر. إنه ليس بوعد بما هو قادم، ولكن لمحة عما يجري العمل عليه.
+
+- #### قد تبدو صفحة تسجيل الدخول مختلفة عن الإنتاج
+
+ نحن نستخدم مستأجر اختبار لـ freecodecamp.dev على Auth0، وبالتالي ليس لدينا القدرة على تعيين نطاق مخصص. هذا يجعل من الممكن أن تظهر جميع إعادة توجيه المكالمات وصفحة تسجيل الدخول في نطاق افتراضي مثل: `https://freecodecamp-dev.auth0.com/`. وهذا لا يؤثر على هذه الوظيفة التي تقترب من الإنتاج بقدر ما يمكننا الحصول عليه.
+
+## المسائل المتعلقة بالإبلاغ وترك التعليقات
+
+الرجاء فتح مشكلات جديدة للمناقشات والإبلاغ عن الأخطاء. يمكنك تسميتهم كـ **[`الإصدار: التالي/التجريبي`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** للتجربة.
+
+يمكنك إرسال بريد إلكتروني إلى `dev[at]freecodecamp.org` إذا كان لديك أي استفسار. كما هو الحال دائمًا يجب إبلاغ جميع نقاط الضعف الأمنية إلى `الأمن[at]freecodecamp.org` بدلاً من تعقب الجمهور والمنتدى العام.
diff --git a/docs/i18n/Arabic/flight-manuals/moderator-handbook.md b/docs/i18n/Arabic/flight-manuals/moderator-handbook.md
new file mode 100644
index 0000000000..9a9e91a5eb
--- /dev/null
+++ b/docs/i18n/Arabic/flight-manuals/moderator-handbook.md
@@ -0,0 +1,327 @@
+# دليل مشرف FreCodeCamp الرسمي.
+
+هذا سيساعدك على ضبط أماكن مختلفة في مجتمعنا، بما في ذلك:
+
+- مشاكل GitHub & طلبات السحب
+- المنتدى وغرف الدردشة ومجموعات الفيسبوك وغيرها من أماكن الاجتماعات على الإنترنت
+- المناسبات الشخصية مثل المجموعات الدراسية، والهاكاثون, والمؤتمرات
+
+**جميع مشرفي FreCodeCamp هم مشرفون على نطاق المجتمع. وهذا يعني أننا نثق بأنكم ستشرفون على أي من هذه الأماكن.**
+
+هذا، يمكنك أن تعمل كمشرف في أي مكان من الأماكن التي تهمك. بعض المشرفين يساعدون فقط على GitHub. ويساعد آخرون فقط في المنتدى. بعض المشرفين ناشطون في كل مكان.
+
+وخلاصة القول أننا نريدك أن تستمتع بأن تكون مشرفا، واستثمر وقتك الشحيح في الأماكن التي تهمك.
+
+> [!ملحوظة] "مع القوة العظيمة تأتي مسؤولية عظيمة." - العم بن
+
+وبوصف درجة الحرارة مشرفة، فإن درجة الحرارة أهم من المهارة التقنية.
+
+اسمع. كن مساعداً. لا تسيء استخدام قوتك.
+
+FreCodeCamp هو مجتمع شامل، ونحن بحاجة إلى الحفاظ عليه بهذه الطريقة.
+
+ولدينا مدونة سلوك واحدة تحكم مجتمعنا بأسره. وكلما قلّت القواعد سهولة تذكرها. يمكنك قراءة هذه القواعد وإلزامها بالذاكرة [هنا](https://code-of-conduct.freecodecamp.org).
+
+# Moderating GitHub
+
+المشرفين لديهم القدرة على إغلاق المشكلات وقبول طلبات السحب أو إغلاقها.
+
+ويضطلع المشرفون بمسؤوليتين رئيسيتين فيما يتعلق بـ GitHub:
+
+1. QA'ing و دمج طلبات السحب
+2. تقييم المسائل والاستجابة لها
+
+## اعداد طلبات السحب
+
+طلبات السحب هي كيف يقوم المساهمون بإرسال تغييرات إلى مستودع رمز مجاني. من المهم أن ننفذ ضمان الجودة (QA) عند طلبات السحب قبل أن نقرر ما إذا كنا سندمجها أو نغلقها.
+
+### أنواع طلبات السحب
+
+1. **تعديلات تعليمات التحدي** هذه تغييرات على نص التحديات - الوصف أو التعليمات أو نص الاختبار. يمكنك أيضًا مراجعة هذه الحقوق على GitHub والبت فيما إذا كان سيتم دمجها. نحن بحاجة إلى أن نكون أكثر حذرا بشأن هذه المسائل، لأن ملايين الناس سيواجهون هذا النص وهم يعملون من خلال منهج FreCodeCamp الدراسي. هل طلب السحب يجعل النص أكثر وضوحا دون جعله أطول بكثير؟ هل التعديلات ذات صلة وليست مفرطة في الدردشة؟ تذكر أن هدفنا هو أن تكون التحديات واضحة وقصيرة قدر الإمكان. إنهم ليسوا المكان للحصول على تفاصيل غامضة. وقد يحاول المساهمون أيضا إضافة روابط إلى الموارد إلى التحديات. يمكنك إغلاق طلبات السحب هذه والرد عليها بهذا:
+
+ > شكرا لك على طلب السحب الخاص بك.
+ >
+ > وأغلق طلب السحب هذا. الرجاء إضافة روابط وتفاصيل أخرى لمقالة الدليل المقابلة للطعن بدلاً من ذلك.
+ >
+ > إذا كنت تعتقد أنني مخطئ في إغلاق هذه المشكلة، يرجى إعادة فتحها وإضافة المزيد من الإيضاحات. شكرا لك و البرمجة السعيدة.
+
+2. **تعديل كود التحدي** هذه تغييرات على التعليمات البرمجية في تحد - بذور التحدي، حل التحدي، سلاسل الاختبار. يجب سحب طلبات السحب هذه من GitHub واختبارها على جهاز الكمبيوتر المحلي الخاص بك للتأكد من أنه لا يزال من الممكن اجتياز اختبارات التحدي مع الحل الحالي، والشفرة الجديدة لا تقدم أي أخطاء. وقد يحاول بعض المساهمين إضافة اختبارات إضافية لتغطية حالات الزاوية الأطلسية. ونحن بحاجة إلى توخي الحذر لكي لا نجعل التحدي أكثر تعقيدا. وينبغي أن تكون هذه التحديات واختباراتها بسيطة وبديهية قدر الإمكان. بغض النظر عن تحديات الخوارزمية وقسم إعداد المقابلات، يجب أن يكون المتعلمون قادرين على حل كل تحد في غضون دقيقتين تقريبا.
+
+3. **تغييرات Codebase** هذه التعليمات البرمجية تغير وظيفة منصة FreCodeCamp نفسها. في بعض الأحيان يحاول المساهمون إجراء تغييرات بدون الكثير من التفسير، ولكن بالنسبة للتغييرات البرمجية نحتاج إلى التأكد من وجود حاجة حقيقية للتغيير. لذا يجب أن تشير طلبات السحب هذه إلى مشكلة GitHub الحالية حيث تناقش أسباب التغيير. ثم يمكنك فتح طلب السحب على جهاز الكمبيوتر الخاص بك واختباره محلياً. بعد أن فعلت ذلك، إذا كانت التغييرات تبدو جيدة، لا تدمجها بعد. يمكنك التعليق على طلب السحب الذي يقول "LGTM"، ثم ذكر @raisedadead حتى يتمكن من إلقاء نظرة نهائية.
+
+### كيفية دمج أو إغلاق طلبات السحب
+
+بادئ ذي بدء، عندما تختار طلب سحب إلى الجودة، يجب عليك تعيين نفسك لها. يمكنك القيام بذلك بالنقر على رابط "تعيين نفسك" أسفل الجزء "المحال إليه" في العمود الأيمن من واجهة GitHub.
+
+وتبعا لنوع طلب السحب، يتبع القواعد المقابلة المذكورة أعلاه.
+
+قبل دمج أي طلب سحب، تأكد من أن GitHub لديه علامات فحص خضراء لكل شيء. إذا كان هناك أي X'، فحصها أولاً واكتشف كيفية تحويلها إلى علامات فحص خضراء أولاً.
+
+في بعض الأحيان سيكون هناك صراع للدمج. وهذا يعني أن طلب سحب آخر قد أدخل تغييرا على نفس الجزء من نفس الملف بالضبط. GitHub لديه أداة لمعالجة تناقضات الدمج هذه مباشرة على GitHub. يمكنك محاولة معالجة هذه الصراعات. فقط استخدم أفضل حكمك. التغييرات في طلب السحب ستكون في الأعلى، وستصبح التغييرات في الفرع الرئيسي في الأسفل. في بعض الأحيان ستكون هناك معلومات زائدة عن الحاجة يمكن حذفها. قبل أن تنتهي، تأكد من حذف `<<<<<<`، `=====`، و `>>>>>>` الذي يضيفه Git للإشارة إلى مناطق الصراع.
+
+إذا بدا طلب السحب جاهزا للدمج (ولا يتطلب الموافقة من @raisedadead)، يمكنك المضي قدما ودمجه. تأكد من استخدام وظيفة "سكواش ودمج" الافتراضية على GitHub. هذا سوف يهدم جميع طلبات السحب التي تلتزم في التزام واحد، مما يجعل تاريخ Git أسهل بكثير للقراءة.
+
+يجب عليك التعليق على طلب السحب، وشكر المساهم بطريقتك الشخصية.
+
+إذا كان مؤلف طلب السحب "أول مساهم" فيجب عليك أيضاً تهنئتهم على أول طلب سحب مدمج إلى المستودع. يمكنك النظر إلى الزاوية اليمنى العليا في هيئة PR's لتحديد المساهم لأول مرة. سوف تظهر `مساهم لأول مرة` كما هو موضح أدناه:
+
+
+
+إذا كان طلب السحب لا يبدو جاهزاً للدمج، يمكنك الرد بأدب على إخبار مقدم البلاغ بما ينبغي أن يفعله للحصول على الجهاز. ويؤمل أن يجيبوا وأن يجعلوا طلب السحب أقرب إلى الجاهزة.
+
+ومن الواضح أن أي طلب للسحب سيكون في كثير من الأحيان منخفضا للجهد. يمكنك في كثير من الأحيان إخبار هذا على الفور عندما لم يقم المساهم بالتحقق من خانات الاختيار في قالب طلب السحب، أو استخدم عنوان طلب سحب عام مثل "إجراء تغييرات" أو "تحديث فهرس. د".
+
+وهناك أيضا حالات يحاول فيها المساهم إضافة رابط إلى موقع الويب الخاص به، أو تضمين مكتبة أنشأوها بأنفسهم، أو لديها تحرير تافهة لا يساعد أي شخص إلا بأنفسهم.
+
+وفي كلتا الحالتين، ينبغي أن تمضي قدما وأن تغلق طلب السحب والرد بهذه الرسالة القياسية:
+
+> شكرا لك على فتح طلب السحب هذا.
+>
+> هذه رسالة قياسية تخبرك أننا راجعنا طلب السحب الخاص بك وقررنا عدم دمجه. ونحن نرحب بطلبات السحب في المستقبل منكم.
+>
+> شكرا لك و البرمجة السعيدة.
+
+إذا كنت بحاجة إلى رأي ثان بشأن طلب الجذب، فأمضي قدماً وتترك تعليقاتك على طلب الجذب، ثم أضف تسمية "مناقشة" إلى طلب السحب.
+
+## إدارة مشكلات GitHub
+
+FreCodeCamp مشروع نشط مفتوح المصدر. إننا نحصل على قضايا جديدة كل يوم، وكلها تحتاج إلى تجربتها ووضع علامات عليها.
+
+### أنواع مشاكل GitHub
+
+1. **طلبات مساعدة التعليمات البرمجية**، والتي قام الناس بالخطأ بإنشاء مشاكل GitHub لها. إذا كان شخص ما يطلب المساعدة، قم بلصق الرسالة التالية، ثم أغلق المشكلة.
+
+ > شكرا لك على الإبلاغ عن هذه المشكلة.
+ >
+ > هذه رسالة قياسية تخبرك أن هذه المشكلة تبدو وكأنها طلب للمساعدة. بدلاً من طلب المساعدة هنا، يرجى النقر على زر \*\*"مساعدة"\*\* على التحدي في معسكر البرمجيات الحرة، والذي سيساعدك على إنشاء سؤال في الجزء الصحيح من المنتدى. عادة ما يقوم المتطوعون في المنتدى بالرد على الأسئلة في غضون ساعات قليلة ويمكنهم المساعدة في تحديد ما إذا كانت هناك مشكلة في التعليمات البرمجية الخاصة بك أو اختبارات التحدي.
+ >
+ > إذا قرر أعضاء المنتدى أنه لا يوجد خطأ في التعليمات البرمجية، يمكنك طلب إعادة فتح هذه المشكلة.
+ >
+ > شكرا لك و البرمجة السعيدة.
+
+2. **مشكلات الخطأ أو التوضيح** حاول تكرار الخطأ بنفسك إذا استطعت. إذا لم يكن الأمر كذلك، اسألهم عن الخطوات التي تمكنهم من إعادة إنتاج الخطأ، وما إذا كان لديهم أي لقطات شاشة، مقاطع الفيديو، أو التفاصيل الإضافية التي يمكن أن تساعدك على إعادة نشر المشكلة. بمجرد أن تتمكن من تكرار المشكلة - أو على الأقل تأكيدها مشكلة قانونية - قم بتسميتها `مؤكدة`. ثم:
+
+- إذا كان الأمر بسيطاً إلى تحدي قائم، قم بتسمية `الموقت الأول فقط`، وإلا تم تسميته ب `المساعدة المطلوبة`. استخدام تسميات أخرى حسب الاقتضاء.
+- إذا كانت المشكلة أكثر أهمية، علم كخطأ ``. إذا كان هناك أي غموض فيما يتعلق بالمسار الصحيح للعمل بشأن مسألة ما. لا تتردد في وسم @raisedadead حول المسألة والحصول على رأيه بشأنها، ثم أضف `تسمية المناقشة`
+
+3. **تكرار المشكلات** إذا كانت المشكلة هي نفس مشكلة أخرى تم الإبلاغ عنها، يجب أن تكون الأولوية للمشكلة السابقة المبلغ عنها. علم باسم `تكرار`، قم بلصق الرسالة التالية استبدال `#XXX` برقم المشكلة، ثم أغلق المشكلة.
+
+ > شكرا لك على الإبلاغ عن هذه المشكلة.
+ >
+ > هذه رسالة قياسية تنبيهك أن هذه المشكلة تبدو مشابهة جدا للمشكلة #XXXXX, ولذلك فإنني أختتم هذه المناقشة بوصفها تكرارا لها.
+ >
+ > إذا كنت تعتقد أنني مخطئ في إغلاق هذه المشكلة، يرجى إعادة فتحها وإضافة المزيد من الإيضاحات. شكرا لك و البرمجة السعيدة.
+
+4. **أصلحت في التجهيز** بعض المشاكل ربما تم إصلاحها بالفعل في التجهيز، ولكن ليس لديها مشكلة في GitHub مرتبطة بها. إذا كان هذا هو الحال، يمكنك لصق الرسالة التالية، وإغلاق المشكلة، وإضافة `حالة: تم حله/شحن` التسمية:
+
+ > شكرا لك على الإبلاغ عن هذه المشكلة.
+ >
+ > هذه رسالة قياسية تخبرك أن المشكلة التي ذكرتها هنا موجودة في الإنتاج، ولكن تم بالفعل إصلاحها في مرحلة التدرج. وهذا يعني أنه في المرة القادمة التي ندفع فيها فرع التجهيز إلى الإنتاج، ينبغي حل هذه المشكلة. بسبب هذا، أنا أغلق هذه المشكلة.
+ >
+ > إذا كنت تعتقد أنني مخطئ في إغلاق هذه المشكلة، يرجى إعادة فتحها وإضافة المزيد من الإيضاحات. شكرا لك، و البرمجة السعيدة.
+
+### إغلاق الجمود، المشكلات غير النشطة و طلبات السحب
+
+- القضايا العادية أو حقوق الملكية الخاصة هي القضايا التي لم تشهد أي نشاط من البروتوكول الاختياري لمدة 21 يوماً (3 أسابيع من آخر النشاط)، ولكن فقط بعد أن يطلب المشرف المزيد من المعلومات/التغييرات. يمكن إغلاق هذه البرامج في نص تلقائي/روت أو بواسطة المشرفين أنفسهم.
+
+- النشاط معرَّف كما يلي: التعليقات التي تطلب تحديثاً على PR والمحاولات مثل `حالة: التحديث المطلوب` التسمية الخ.
+
+- وإذا طلب البرنامج مساعدة إضافية أو حتى وقت، يمكن تخفيف ما سبق ذكره وإعادة النظر فيه بعد تقديم الرد. وعلى أية حال، ينبغي أن تستعمل النماذج أفضل ما لديها من حكم لتسوية الوضع المعلق للحزب التقدمي الموحد.
+
+### مبادئ توجيهية أخرى لمشرفي نظام GitHub
+
+على الرغم من أنه سيكون لديك الوصول للكتابة إلى مستودع FreCodeCamp، **يجب ألا تدفع التعليمات البرمجية مباشرة إلى مستودعات freeCodeCamp**. جميع التعليمات البرمجية يجب أن تدخل رمز معسكر FreCodep في شكل طلب سحب من شوكة المستودع.
+
+وأيضا، يجب ألا تقبل أبداً براءات الاختراع الخاصة بك. يجب أن يكونوا QAd من قبل مشرف آخر، تماما مثل أي رئيس سابق آخر.
+
+إذا لاحظت أن أي شخص يخالف مدونة السلوك [](https://code-of-conduct.freecodecamp.org) على مشكلات GitHub ، أو فتح طلبات سحب مع محتوى أو كود خبيث، البريد الإلكتروني dev@freecodecamp. rg مع رابط لطلب السحب المذهل ويمكننا النظر في حظرهم من منظمة FreCodeCamp GitHub بشكل كامل.
+
+# إدارة المنتدى
+
+كمشرف ، يمكنك المساعدة في إبقاء مجتمعنا مكانا ممتعا لأي شخص للتعلم والحصول على المساعدة. سوف تتعامل مع المشاركات المعلمة والتعامل مع الرسائل غير المرغوب فيها، خارج الموضوع، وغيرها من المحادثات غير الملائمة.
+
+لاحظ أنه بمجرد أن تكون مشرفا على المنتدى، ستبدأ في مشاهدة تلميحات المشرف الأزرق حول أعضاء المنتدى، مثل "هذه هي المرة الأولى التي ينشر فيها [person] - دعونا نرحب بهم في المجتمع! أو "[person] لم تنشر في وقت طويل - دعونا نرحب بها مرة أخرى."
+
+![رسالة نصية زرقاء تقول "هذه هي المرة الأولى التي تنشر فيها [person] - دعونا نرحب بهم في المجتمع!](https://i.imgur.com/mPmVgzK.png)
+
+هذه فرص لك للترحيب بهم وجعلهم يشعرون بميزة إضافية. أنت لا تعرف أبدا أي شخص يشارك بشكل هامشي قد يصبح المساعد الأعلى التالي لنا، ويساعد العديد من الناس الآخرين في رحلتهم البرمجية. وحتى أصغر لطف قد يؤدي إلى سلسلة من الأفعال الجيدة.
+
+### حذف مشاركات المنتدى
+
+مشرفو المنتدى لديهم القدرة على حذف مشاركات المستخدم. يجب عليك القيام بذلك فقط في الحالات التالية:
+
+1. وقد نشر شخص ما صورة إباحية أو صورية عنيفة.
+2. قام شخص ما بنشر رابط أو كود ضارة في طبيعته، ويمكن أن يضر بكاميرات أخرى تنقر عليها.
+3. شخص ما غمر خيطا مع الكثير من رسائل البريد المزعج.
+
+### التعامل مع البريد المزعج
+
+في أول مشاركة غير مرغوب فيها للمستخدم، أرسل لهم رسالة تشرح المشكلة، وإزالة الرابط أو المنشور حسب الاقتضاء. اترك ملاحظة على الملف الشخصي للمستخدم تشرح الإجراء الذي اتخذته. وإذا استمرت المشكلة، تتبع العملية أعلاه. منع المستخدم بهدوء من النشر (باستخدام خيار الصمت على لوحة إدارة المستخدم)، ثم إرسال تحذير مع رمز السلوك. حدد المربع في الرسالة الخاصة التي تشير إلى أن رسالتك هي "تحذير رسمي".
+
+يمكنك طرح الأسئلة والإبلاغ عن الحوادث في [قسم منتدى الموظفين](https://forum.freecodecamp.com/c/staff).
+
+### التعامل مع المحادثات خارج الموضوع
+
+ويمكن إعادة تصنيف الوظائف أو المواضيع التي يبدو أنها في المكان الخاطئ أو إعادة تسميتها إلى ما هو مناسب.
+
+وفي ظروف استثنائية، قد يكون من المناسب أن يطرح منسق المناقشة في خيوط متعددة.
+
+مرة أخرى، إذا كان لديك أي مشاكل أو أسئلة، قم بتأدية وظيفة في إطار إجراءاتك في فئة الموظفين، ووسم مشرف آخر إذا كنت تريد منهم مراجعة إجراءاتك المعتدلة.
+
+### المستخدمين القاصرين
+
+شروط الخدمة لدينا تتطلب أن يكون عمر مستخدمي CodeCamp 13 سنة على الأقل. وفي حالة ما إذا كشف المستخدم عن أنه يقل عمره عن 13 سنة، أرسل لهم الرسالة التالية وحذف حساب المنتدى الخاص بهم (إذا كان الحذف غير متوفر، تعليق الحساب). ثم البريد الإلكتروني [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) أو [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) لحذف حساب المستخدم freeCodeCamp أيضا.
+
+```markdown
+الثانوية: لا يسمح للمستخدمين الذين تقل أعمارهم عن 13 سنة باستخدام المنتدى لكل شروط الخدمة
+
+لقد تبين لنا أن عمرك أقل من 13 سنة. لكل [Free CodeCamp شروط الخدمة] (https://www.freecodecamp.org/news/terms-of-service) يجب أن يكون عمرك 13 سنة على الأقل لاستخدام الموقع أو المنتدى. سنقوم بحذف حساب FreCodeCamp الخاص بك وحساب المنتدى الخاص بك. وهذا التقييد يجعلنا ممتثلين لقوانين الولايات المتحدة.
+
+يرجى الانضمام مرة أخرى بمجرد بلوغك سن 13 سنة على الأقل.
+
+نشكركم على تفهمكم.
+```
+
+# إدارة الفيسبوك
+
+إذا رأيت أي شيء يبدو وكأنه يخالف مدونة قواعد السلوك الخاصة بنا [](https://code-of-conduct.freecodecamp.org/)، يجب عليك حذفها فورا.
+
+في بعض الأحيان يقوم الناس بنشر الأشياء التي يعتقدون أنها مضحكة. إنهم لا يدركون أن ما قالوا أو ما تقاسموه يمكن تفسيره على أنه هجوم. وفي هذه الحالات، ينبغي حذف وظيفتهم، ولكن لا يلزم بالضرورة حظر الشخص الذي قام بنشرها. ومن خلال حذف مشاركتهم، نأمل أن يفهموا أن ما نشروه كان غير مناسب.
+
+ولكن إذا كانت جريمة فظيعة لا يمكن عزوها بشكل معقول إلى اختلاف ثقافي أو سوء فهم للغة الإنجليزية. ثم يجب عليك أن تفكر بقوة في حظر العضو من مجموعة فيسبوك.
+
+# ديسكورد مشرف
+
+إليك كيف يتعامل المشرفون مع انتهاكات [مدونة قواعد السلوك](https://code-of-conduct.freecodecamp.org/) على ديسكورد:
+
+1. **تأكد من أن القصد منه هو انتهاك مدونة قواعد السلوك.** لم تكن جميع انتهاكات مدونة قواعد السلوك مقصودة بهذه الصفة. كاميرا جديدة قد تنشر كمية كبيرة من التعليمات البرمجية للمساعدة، غير مدركة أن هذا يمكن اعتباره غير مرغوب فيه. في هذه الحالات، يمكنك فقط أن تطلب منهم لصق تعليماتهم البرمجية مع خدمات مثل Codepen أو Pastebin.
+
+2. **وفي حالة انتهاك كاميرا مدونة قواعد السلوك بشكل واضح، يتصرف منسق المناقشة على النحو التالي:**
+
+- تعليق الكاميرا المسيئة، ولكن لا تحذر منها أو تهددها. بدلاً من ذلك، أعطيتهم بهدوء الدور المعلق في ديسكورد، ثم أرسل إليهم الرسالة التالية:
+
+```
+هذه رسالة قياسية تخبرك بأنني اضطررت إلى تعليقك مؤقتاً من التحدث على خادم FreCodeCamp Discord
+
+وأنا مديرة المناقشة بالنيابة عن جماعتنا المفتوحة المصدر.
+
+وأنا مديرة المناقشة بالنيابة عن جماعتنا المفتوحة المصدر. يمكنني النظر في إزالة تعليقك، لكنني أريدك أن تتخذوا الخطوات الثلاث التالية أولاً:
+
+1. اقرأ كود السلوك الخاص بنا: https://code-of-conduct.freecodecamp.org/
+2. رسالة إليّ تؤكد أنك قد أنهيت قراءتها. 3. اشرح لي لماذا تعتقدون أنني علقتك، ولماذا يجب أن أزيل تعليقك.
+```
+
+- أبلغ عن ملخص قصير للحدث وكيفية استجابتهم له في قناة #admin . وفيما يلي مثال على ما قد يبدو عليه مثل هذا الموجز:
+
+```
+معلقة: _@username_
+السبب: _Spamming, trolling_
+دليل: _واحدة أو أكثر من الروابط إلى الرسالة (الرسائل) المسيئة_
+CoC: _Sent_
+```
+
+- وينبغي أن يكون التقرير المتعلق بحذف التعليق على النحو التالي:
+
+```
+لقد قمت بإزالة التعليق من '@username `. لقد أرسلت إليهم مدونة قواعد السلوك. واليوم فقط أدركوا أنهم علقوا و اعتذروا عما فعلوه.
+```
+
+- واستنادا إلى رد المجرمين، سيقرر مدير المناقشة ما إذا كان سيسحب التعليق من كاميل المخالف. إذا كانت تبدو محترمة ومذهلة، يمكن للمشرف أن يزيل التعليق. وكمسألة تتعلق بالسياسات، سيكون المشرفون مهذبين خلال هذه العملية، مهما كان سوء تصرف الكاميرا المسيئة. إذا لم يكونوا محترمين أو غير راغبين في قبول مدونة قواعد السلوك، يجب أن يتبع التعليق بحظر من خادم ديسكورد. استخدم نفس الموجز كما ورد أعلاه، ولكن استعيض عن "معلقة:" ب "محظورة:".
+
+3. **كيفية حظر و/أو فك الحظر**
+
+- من أجل حظر شخص ما، انقر بزر الماوس الأيمن على اسم المستخدم/الصورة الشخصية الخاصة بهم وحدد "حظر ". سيتم منحك الخيار لحذف رسائلها السابقة - حدد "لا تقم بحذف أي من"، لأن الرسائل ينبغي أن تظل حاضرة بوصفها سجلا تاريخيا.
+- إذا قررت حظر شخص ما، فهذا يعني أنهم غير مستعدين للالتزام بمدونة قواعد السلوك الخاصة بنا. ولذلك، نادرا ما ينبغي أن يحدث رفع الحظر عن كامير. ومع ذلك، إذا نشأت الحاجة، يمكنك فعل ذلك بالنقر على اسم الخادم، واختيار "إعدادات الخادم"، اختيار "الحظر"، اختيار المستخدم الذي ترغب في فك حظره، والنقر فوق "إلغاء الحظر".
+
+حظر ديسكورد عام - لا يمكنك حظر مستخدم من قناة معينة، فقط من الخادم بأكمله.
+
+4. **حذف الرسائل** للمشرفين القدرة على حذف الرسائل على ديسكورد. ولا ينبغي أن يمارسوا هذه القدرة إلا في أربع حالات محددة جداً:
+
+- وقد نشر شخص ما صورة إباحية أو صورية عنيفة.
+- قام شخص ما بنشر رابط أو كود ضارة في طبيعته، ويمكن أن يضر بكاميرات أخرى تنقر عليها.
+- وقد غمر شخص ما الدردشة بالكثير من الرسائل غير المرغوب فيها إلى حد كبير (عادة ما تشمل البوتات) بحيث تجعل الدردشة غير قابلة للاستخدام على الإطلاق.
+- قام شخص ما بنشر إعلان و/أو رسالة / صورة للترويج الذاتي (وسائل الإعلام الاجتماعية).
+
+وفي جميع الحالات الأخرى - وحتى الحالات التي تنتهك فيها مدونة قواعد السلوك - ينبغي ألا يحذف المنسقون الرسالة لأنها سجل تاريخي هام. عندما تقوم بحذف رسالة، تأكد من أخذ لقطة للشاشة أولاً! يمكن تسجيل لقطة الشاشة في قناة #mod-log، ولكن بالنسبة لسجل #activs-log يكفي القول بأن الأدلة قد "حذفت بسبب المحتوى الحساس". ملاحظة: إذا كانت الرسالة تحتوي على مواد تكون غير قانونية لأخذ لقطة شاشة، انسخ رابط الرسالة بدلاً من ذلك - قدم رابط الرسالة إلى @raisedadead للإرسال إلى فريق ديسكورد الاستئماني والسلامة.
+
+5. **لا تستخدم @everyone أو @here** لا تستخدم @all أو @هنا تحت أي ظروف! كل شخص في غرفة الدردشة هذه سيحصل على إشعار. وفي بعض الحالات، عشرات الآلاف من الناس. بدلاً من ذلك، إذا كنت تريد من الناس رؤية إعلان، يمكنك تثبيته على القناة للسماح للجميع بقراءته.
+
+6. **لا تهدد بحظر أو تعليق** إذا كان كاميرا يخالف مدونة السلوك، لا تهدد بحظرها أو تعليقها، ولا تحذيرها علنا أبدا. وبدلاً من ذلك، التحدث إليهم على انفراد، أو إرسال رسالة رسمية إليهم وإصدار تعليق (حسب البروتوكول أعلاه). لا أحد في تلك القناة يحتاج إلى معرفة أنك حظرت/علقت الشخص - يمكن للكاميرات عرض الملخص في قناة #activt-log إن كانوا يريدون الاستمرار في تلك المعلومات. إذا كان الانتهاك غير مقصود بوضوح ولا يبرر تعليقه أو محادثة خاصة، اجعل الكاميرا المسيئة على علم بأفعاله دون جعلها تخرج كتحذير. وعلى سبيل المثال:
+
+- الكاميرا تنشر جدارا من التعليمات البرمجية لطلب المساعدة
+
+ المشرف: @username الرجاء استخدام Codepen أو Pastebin عند نشر كميات كبيرة من التعليمات البرمجية.
+
+- أو إذا كان عليك أن تشرح لماذا:
+
+ المشرف: @username الرجاء استخدام Codepen أو Pastebin عند نشر كميات كبيرة من التعليمات البرمجية، لأنه يعطل الدردشة للجميع ويمكن أن يعتبر الرسائل غير المرغوب فيها وفقا لمدونة قواعد السلوك الخاصة بنا.
+
+- الانتهاكات المعتدلة وغير المقصودة لمدونة قواعد السلوك
+
+ مدير المناقشة: هذا تذكير ودي للجميع باتباع مدونة قواعد السلوك: https://code-of-conduct.freecodecamp.org//
+
+7. **لا تتقاعس عن أن تكون مشرفا** لا ترى نفسك كما فوق المجتمع. أنت مجتمعك. وقد ثق المجتمع بك للمساعدة في حماية شيء نادر نتقاسمه جميعا - مكان _للترحيب_ للمطورين الجدد. إذا كنت تتغاضى عن أن تكون مشرفا، قد يشعر الناس بالقلق حولك، بنفس الطريقة التي قد يشعر بها الناس بعدم الرضا حول ضابط شرطة، حتى لو لم يفعلوا شيئا خاطئا. هذه مجرد طبيعة إنسانية.
+
+8. **لا تتعارض مع مشرفين آخرين** إذا اختلفت مع إجراء المشرف ، التحدث معهم على انفراد أو إحضارهم في قناة #mod-Chat. لا تتخطى الحظر أبدا، ولا تتناقض أبدا مع المدير الآخر (المنسقون) علنا. وبدلا من ذلك، تجري مناقشة رائعة في المحادثة المفرطة وتقنع مدير المناقشة بأنه ينبغي لهم أنفسهم أن يعكسوا عن حظرهم أو أن يغيروا وجهة نظرهم. تذكر: نحن جميعا في نفس الفريق. ونريد أن نكرم دور المنسقين وأن نقدم جبهة موحدة.
+
+9. **تحدث مع مشرفين آخرين** لدينا غرفة للمشرفين فقط. استخدمه ! إذا كنت تشعر بعدم الارتياح لكيفية التعامل مع حالة معينة، فاطلب المساعدة من المشرفين الآخرين. إذا كنت تعتقد أنه يجب مناقشة شيء ما، قم بذلك. أنت جزء من الفريق ونحن نقدر مدخلات كل عضو في الفريق! حتى لو اختلفت تماما مع أي شيء في هذه المبادئ التوجيهية أو مدونة السلوك!
+
+10. **غير نشط مؤقتا** إذا كنت لن تكون نشطا كمشرف لفترة من الوقت بسبب العطلة، المرض أو أي سبب آخر، تأكد من إخبار الآخرين في قناة الدردشة #mod-Chat. هذا هو ما نعرفه إذا كان بإمكاننا التعويل عليك لتكون نشطا بشكل منتظم في الخادم أم لا.
+
+# كيف تصبح مشرفا
+
+إذا كنت تساعد الناس في المجتمع باستمرار بمرور الوقت، فإن فريق إدارة شؤون الإعلام الخاص بنا سيأخذ في نهاية المطاف الإشعار، وسوف يذكرك أحدهم كمشرف محتمل لـ [موظفينا](https://forum.freecodecamp.org/g/Team). ولا توجد اختصارات يمكن أن تكون مشرفة.
+
+إذا تمت الموافقة عليك، سوف نضيفك إلى أفرقة المشرفين لدينا على [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators)، [المنتدى](https://forum.freecodecamp.org/g/moderators)، إلخ.
+
+> [!ملاحظة] > **لـ GitHub:** بعد قبولك كمشرف، سوف تتلقى دعوة مستودع Github. ستحتاج إلى التوجه نحو [FreCodeCamp GitHub دعوة](https://github.com/orgs/freeCodeCamp/invitation) لتتمكن من قبول الدعوة. هذا مطلوب لنكون قادرين على إعطائك حق الدخول للكتابة على بعض مستودعاتنا.
+
+# كيف نتقاعد المشرفين الخاملين
+
+يرجى ملاحظة أننا سنقوم في كثير من الأحيان بإزالة المودات التي نعتقد أنها غير نشطة. وعندما نفعل ذلك، سنرسل الرسالة التالية:
+
+> هذه رسالة قياسية تخبرك أن: بما أنك لم تكن مشرفاً نشطاً مؤخراً، فإننا نزيلك من فريق المشرفين لدينا. ونحن نقدر تقديرا عميقا مساعدتكم في الماضي.
+
+> إذا كنت تعتقد أننا فعلنا ذلك بخطأ، أو بمجرد أن تكون على استعداد للعودة والإسهام بالمزيد، فقط الرد على هذه الرسالة التي تسمح لي بالمعرفة.
+
+# كيف تعمل غرفتنا المساهمين
+
+أي شخص مرحب به في غرفة المساهمين [على ديسكورد](https://discord.gg/KVUmVXA). إنها غرفة الدردشة المخصصة لمنسقي الشؤون وآلات التصوير الأخرى الذين يسهمون في مجتمعنا بأي شكل من الأشكال، بما في ذلك من خلال الأفرقة الدراسية.
+
+افتراضنا هو أن المساهمين سيقرأون أي شيء في هذه الغرفة يشير إليهم مباشرة باستخدام `@username`. كل شيء آخر اختياري. ولكن لا تتردد في قراءة أي شيء ينشره أي شخص هناك والتفاعل.
+
+# التعامل مع المحامين
+
+قد يتم الاتصال بك من قبل المنظمات التي ترغب في الشراكة أو الاشتراك مع FreCodeCamp بطريقة ما. بمجرد أن تدرك أن هذا هو ما يفعلونه، يرجى التوقف عن التحدث إليهم وإخبارهم بالبريد الإلكتروني quincy@freecodecamp.org. وهو يحصل على مقترحات من هذا القبيل طوال الوقت وهو في أفضل وضع للحكم على ما إذا كانت هذه العلاقة تستحق بالنسبة لمجتمعنا المحلي (ونادراً ما تكون عليها).
+
+# التعامل مع الاستفسارات الصحية (العقلية)
+
+قد تجد الحالات التي يلتمس فيها المستعملون المشورة الطبية أو الذين يعالجون مشاكل الصحة النفسية ويبحثون عن الدعم. وكمسألة تتعلق بالسياسات، ينبغي أن تتجنب التحدث على انفراد عن هذه المسائل. وإذا ما انعكست الحالة في مرحلة ما على لجنة التنسيق الإدارية، فإننا نريد تسجيل المحادثة (المحادثات). اجعل من الواضح أننا لسنا مهنيين طبيين وأنك تشجع المستخدم على العثور على مساعدة مهنية. على الرغم من صعوبة ذلك في بعض الأحيان، تجنب تقديم أي نصائح أو نصائح غير توجيه المستخدم نحو المساعدة المهنية!
+
+إذا حدث هذا على ديسكورد: علق المستخدم. وهذا لا يعني معاقبتهم! تعليق المستخدم سوف ينشئ قناة خاصة يمكن الوصول إليها فقط من قبل المستخدم والفريق. وهذا سيعود بالفائدة على كل من المستخدم و FCC بعدة طرق:
+
+- المستخدم مكفول بعض الخصوصية
+- المحادثة العامة لم تعد متوقفة
+- أعضاء الفريق الآخرون يمكنهم الدخول ، إذا كنت غير مريح في التعامل مع الوضع بنفسك
+
+> [!NOTE] تعليق المستخدم يعطي لهم تلقائياً رسالة عن قراءة كود السلوك الخاص بنا. تأكد من إعلام المستخدم بأنك أوقفتها لإعطائهم بعض الخصوصية وأنهم لا يعاقبون. هذا مهم جداً! نحن نريد تماما تجنب إعطاء المستخدمين فكرة أنهم يعاقبون على التواصل للحصول على المساعدة!
+
+إذا كنت تعتقد أن المستخدم قادر على العودة إلى المجتمع، انقر بزر الماوس الأيمن على القناة الخاصة ونسخ المعرف. ضع الرسالة التالية في #mod-log:
+
+> المشورة الطبية المرجعية:
+
+بعد ذلك، يمكنك إزالة التعليق من المستخدم كما تفعل عادة.
+
+عناوين URL المساعدة:
+
+http://www.suicide.org/international-suicide-hotlines.html
+
+# مذكرة بشأن حرية الكلام
+
+في بعض الأحيان يدافع الناس عن شيء هجومي أو حارق قالوا بأنه "حرية التعبير".
+
+يلخص هذا البرنامج الهزلي XKCD تماماً أفكار معظم المجتمعات المحلية بشأن حرية التعبير. لذا إذا دافع شخص ما عن شيء ما يقوله "حرية التعبير" لا تتردد في إرساله إليهم.
+
+
+
+شكرا لقراءة هذا، وشكرا لمساعدة مجتمع المطور!
diff --git a/docs/i18n/Arabic/flight-manuals/using-reply-templates.md b/docs/i18n/Arabic/flight-manuals/using-reply-templates.md
new file mode 100644
index 0000000000..0fdac4412b
--- /dev/null
+++ b/docs/i18n/Arabic/flight-manuals/using-reply-templates.md
@@ -0,0 +1,128 @@
+# استخدام قوالب الرد
+
+هذه بعض قوالب الرد القياسية التي قد تستخدمها أثناء استعراض طلبات السحب ومشاكل التجليد.
+
+> يمكنك إنشاء الخاص بك باستخدام خاصية GitHub [**الردود المحفوظة**](https://github.com/settings/replies/) أو استخدام تلك أدناه.
+
+### شكرا لك
+
+```markdown
+شكرا لك على مساهمتك في الصفحة! 👍
+نحن سعداء لقبول هذه التغييرات ونتطلع إلى المساهمات المستقبلية. 🎉
+```
+
+### شكرا لك و مبروك
+
+> لشكر المساهمين لأول مرة وتشجيعهم.
+
+```markdown
+مرحبا @username. تهانينا على أول طلب سحب (PR)! 🎉
+
+شكرا لك على مساهمتك في الصفحة! 👍
+نحن سعداء لقبول هذه التغييرات ونتطلع إلى المساهمات المستقبلية. 📝
+```
+
+### خطأ في البناء
+
+```markdown
+مرحبًا @username
+
+نحب أن نكون قادرين على دمج التغييرات الخاصة بك ولكن يبدو أن هناك خطأ في بناء Travis CI. ⚠️
+
+بمجرد حل هذه المشكلات، سنكون قادرين على مراجعة حسابك الخاص ودمجه. 😊
+
+---
+
+> لا تتردد في الرجوع إلى [دليل نمط كتابة المقالات](https://github. om/freeCodeCamp/freeCodeCamp#article-title) لهذا المستودع عند تنسيق المقالة بشكل صحيح بحيث يمر بناء Travis CI الخاص بك. ✅
+>
+> أيضا، من الممارسات الجيدة على GitHub كتابة وصف موجز للتغييرات الخاصة بك عند إنشاء PR. 📝
+```
+
+### مزامنة Fork
+
+> عندما لا يكون PR محدثاً مع فرع `الرئيسي`
+
+``````markdown
+مرحبًا @username
+
+نحب أن نكون قادرين على دمج التغييرات الخاصة بك ولكن يبدو أن هناك خطأ في بناء Travis CI. ⚠️
+
+```bash
+خطأ: ENOTDIR: ليس دليلا، افتح 'src/pages/java/data-abstraction/index.md'
+``````
+
+هذا الخطأ بالذات لم يكن بسبب الملف الخاص بك ولكن خطأ قديم بسبب دمج الرمز الخاطئ في فرع `الرئيسي`. وقد تم حسمها منذ ذلك الحين.
+
+لتمرير البناء، يجب عليك مزامنة أحدث التغييرات من فرع `الرئيسي` في `freeCodeCamp/freeCodeCamp` repo.
+
+باستخدام سطر الأوامر، يمكنك القيام بذلك في ثلاث خطوات سهلة:
+
+```bash
+git عن بعد إضافة git://github.com/freeCodeCamp/freeCodeCamp.git
+
+git يجلب أعلى مسار
+
+git يجلب سيد أعلى مسار
+```
+
+إذا كنت تستخدم واجهة المستخدم ، يمكنك ببساطة `إضافة جهاز التحكم الجديد ...` واستخدام الرابط `git://github.com/freeCodeCamp/freeCodeCamp.git` من الأعلى.
+
+بمجرد مزامنة الشوكة الخاصة بك وتمرير البناء، سنكون قادرين على مراجعة حسابك الشخصي ودمجه. 😊
+
+---
+
+> لا تتردد في الرجوع إلى مقالة [مزامنة Fork](https://help.github.com/articles/syncing-a-fork/) على GitHub للحصول على مزيد من التبصر حول كيفية إبقاء الشوك الخاص بك محدثة مع المستودع العلوي. 🔄
+>
+> كما أنه ممارسة جيدة على GitHub لكتابة وصف موجز للتغييرات الخاصة بك عند إنشاء PR. 📝
+``````
+
+### دمج التناقضات
+
+> عندما يكون للرقم الرئاسي تضارب يحتاج إلى حله.1
+
+```markdown
+Hey @username
+
+نحب أن نكون قادرين على دمج التغييرات الخاصة بك ولكن يبدو أن لديك بعض التضارب في الدمج.
+
+⚠️
+
+بمجرد حل هذه التعارضات، سنكون قادرين على مراجعة حسابك الخاص ودمجه. 😊
+
+---
+
+> إذا لم تكن على دراية بعملية الدمج، لا تتردد في النظر إلى دليل GitHub's على ["حل دمج تنازع"](https://help. ithub.com/articles/resolving-a-merge-conflict-on-github/). 🔍
+>
+> أيضا، من الممارسات الجيدة على GitHub كتابة وصف موجز للتغييرات الخاصة بك عند إنشاء PR. 📝
+``````
+(1) إذا كان أحد المساهمين لأول مرة لديه صراع على الاندماج، يقوم القائمون على ذلك بحل الصراع بالنسبة لهم.
+
+### Duplicate
+
+> عندما يكون اللمس متكرراً أو متكرراً.
+
+```markdown
+مرحبًا @username
+
+يبدو أنه قد تم قبول تغييرات مماثلة في وقت سابق لهذه المقالة التي تقوم بتحريرها، آسفة لذلك. 😓
+
+إذا كنت تشعر بأن لديك المزيد لإضافته، لا تتردد في فتح PR.
+
+شكرا مرة أخرى! 😊
+
+---
+
+> إذا كان لديك أي أسئلة، لا تتردد في التواصل من خلال [Gitter](https://gitter.im/FreeCodeCamp/Contributors) أو من خلال التعليق أدناه. 💬
+```
+
+### إغلاق طلبات السحب غير صالحة
+
+> عندما يكون R PR غير صالح.
+
+```markdown
+مرحبًا@username
+
+لم تقم بإضافة أي محتوى، سنقوم بإغلاق هذا اللقب و وضع علامة على أنه 'غير صالح`. 😓
+
+لا تتردد في فتح بطاقة شخصية أخرى! 👍
+```
\ No newline at end of file
diff --git a/docs/i18n/Arabic/flight-manuals/working-on-virtual-machines.md b/docs/i18n/Arabic/flight-manuals/working-on-virtual-machines.md
new file mode 100644
index 0000000000..ede8ed5039
--- /dev/null
+++ b/docs/i18n/Arabic/flight-manuals/working-on-virtual-machines.md
@@ -0,0 +1,478 @@
+# Flight Manual for working on Virtual Machines
+
+وبصفتها عضوا في الموظف أو في فريق التفويض، قد يكون تم منحك حق الوصول إلى موفري خدمات السحابة مثل أزور، ديغيرونس، إلخ.
+
+إليك بعض الأوامر المفيدة التي يمكنك استخدامها للعمل على الآلات الظاهرية (VM)، على سبيل المثال القيام بتحديثات الصيانة أو القيام بحفظ المنازل بشكل عام.
+
+# Get a list of the VMs
+
+> [!ملاحظة] بينما قد يكون لديك بالفعل وصول SSH إلى VM، ذلك وحده لن يسمح لك بقائمة الرسائل الشخصية ما لم يتم منحك حق الوصول إلى بوابات السحابة كذلك.
+
+## Azure
+
+تثبيت Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
+
+> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):**
+
+```
+brew install azure-cli
+```
+
+> **(One-time) Login:**
+
+```
+az login
+```
+
+> **Get the list of VM names and P addresses:**
+
+```
+az vm list-ip-addresses --output table
+```
+
+## Digital Ocean
+
+تثبيت Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl
+
+> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):**
+
+```
+brew install doctl
+```
+
+> **(One-time) Login:**
+
+تبديل المصادقة والسياق: https://github.com/digitalocean/doctl#authenticating-with-digitalocean
+
+```
+doctl auth init
+```
+
+> **Get the list of VM names and IP addresses:**
+
+```
+doctl compute droplet list --format "ID,Name,PublicIPv4"
+```
+
+# Spin a VM (or VM Scale Set)
+
+> Todo: Add instructions for spinning VM(s)
+
+
+
+
+# Keep VMs updated
+
+You should keep the VMs up to date by performing updates and upgrades. سيؤدي هذا إلى التأكد من أن الآلة الافتراضية قد تم تصويبها مع أحدث إصلاحات الأمان.
+
+> [!WARNING] Before you run these commands:
+>
+> - تأكد من أنه تم توفير VM بالكامل ولا يوجد خطوات ما بعد التثبيت قيد التشغيل.
+> - إذا كنت تقوم بتحديث الحزم على VM التي تقدم بالفعل تطبيقا، تأكد من إيقاف التطبيق / حفظه. ستسبب تحديثات الحزمة عرض النطاق الترددي للشبكة، الذاكرة و/أو استخدام المعالج مما يؤدي إلى حالات انقطاع في تشغيل التطبيقات.
+
+Update package information
+
+```console
+sudo apt update
+```
+
+Upgrade installed packages
+
+```console
+sudo apt upgrade -y
+```
+
+Cleanup unused packages
+
+```console
+sudo apt autoremove -y
+```
+
+# Work on Web Servers (Proxy)
+
+نقوم بتشغيل مثيلات التحميل المتوازنة (Azure Load Balancer) لخوادمنا على الويب. تقوم هذه الخوادم بتشغيل NGINX التي تعكس مسار كل حركة المرور إلى freeCodeCamp.org من تطبيقات مختلفة تعمل على بنيات تحتية خاصة بها.
+
+إعدادات NGINX متاحة على [هذا المستودع](https://github.com/freeCodeCamp/nginx-config).
+
+## First Install
+
+Provisioning VMs with the Code
+
+### 1. (Optional) Install NGINX and configure from repository.
+
+The basic setup should be ready OOTB, via the cloud-init configuration. يقوم SSH و بالتغييرات حسب الاقتضاء للحالة (الحالات) الخاصة.
+
+إذا لم تستخدم إعدادات Cloud init سابقا استخدم أدناه للإعداد اليدوي ل NGINX وصفحات الخطأ:
+
+```console
+sudo su
+
+cd /var/www/html
+git clone https://github.com/freeCodeCamp/error-pages
+
+cd /etc/
+rm -rf nginx
+git clone https://github.com/freeCodeCamp/nginx-config nginx
+
+cd /etc/nginx
+```
+
+### 2. Install Cloudflare origin certificates and upstream application config.
+
+احصل على شهادات منشأ Cloudflare من التخزين الآمن والتثبيت في المواقع المطلوبة.
+
+**OR**
+
+Move over existing certificates:
+
+```console
+# Local
+scp -r username@source-server-public-ip:/etc/nginx/ssl ./
+scp -pr ./ssl username@target-server-public-ip:/tmp/
+
+# Remote
+rm -rf ./ssl
+mv /tmp/ssl ./
+```
+
+Update Upstream Configurations:
+
+```console
+vi configs/upstreams.conf
+```
+
+Add/update the source/origin application IP addresses.
+
+### 3. Setup networking and firewalls.
+
+Configure Azure firewalls and `ufw` as needed for ingress origin addresses.
+
+### 4. Add the VM to the load balancer backend pool.
+
+Configure and add rules to load balancer if needed. قد تحتاج أيضًا إلى إضافة VMs لتحميل مخزن خلفية الموازنة إذا لزم الأمر.
+
+## تحديث الأمثلة (النفوذ)
+
+1. Check status for NGINX service using the below command:
+
+```console
+sudo systemctl status nginx
+```
+
+2. Logging and monitoring for the servers are available at:
+
+>
+## Updating Instances (Maintenance)
+
+يتم الحفاظ على تغييرات التكوين إلى مثيلاتنا NGINX على GitHub، يجب أن يكون نشر في كل حالة مثل هذا:
+
+1. SSH into the instance and enter sudo
+
+```console
+sudo su
+```
+
+2. Get the latest config code.
+
+```console
+cd /etc/nginx
+git fetch --all --prune
+git reset --hard origin/master
+```
+
+3. اختبار وإعادة تحميل الإعدادات [مع الإشارات](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx).
+
+```console
+nginx -t
+nginx -s reload
+```
+
+# Work on API Instances
+
+1. Install build tools for node binaries (`node-gyp`) etc.
+
+```console
+sudo apt install build-essential
+```
+
+## First Install
+
+Provisioning VMs with the Code
+
+1. Install Node LTS.
+
+2. Update `npm` and install PM2 and setup logrotate and startup on boot
+
+ ```console
+ npm i -g npm
+ npm i -g pm2
+ pm2 install pm2-logrotate
+ pm2 startup
+ ```
+
+3. Clone freeCodeCamp, setup env and keys.
+
+ ```console
+ git clone https://github.com/freeCodeCamp/freeCodeCamp.git
+ cd freeCodeCamp
+ git checkout production-current # or any other branch to be deployed
+ ```
+
+4. Create the `.env` from the secure credentials storage.
+
+5. Create the `google-credentials.json` from the secure credentials storage.
+
+6. Install dependencies
+
+ ```console
+ npm ci
+ ```
+
+7. Build the server
+
+ ```console
+ npm run ensure-env && npm run build:server
+ ```
+
+8. Start Instances
+
+ ```console
+ cd api-server
+ pm2 start production-start.js -i max --max-memory-restart 600M --name org
+ ```
+
+## تحديث الأمثلة (النفوذ)
+
+```console
+## 1 - قطع الأشجار والرصد
+
+```console
+سجلات pm2
+```
+
+```console
+pm2 monit
+```
+
+## Updating Instances (Maintenance)
+
+Code changes need to be deployed to the API instances from time to time. يمكن أن يكون تحديث متجدد أو تحديث يدوي. الأخير ضروري عند تغيير الإعتمادات أو إضافة متغيرات الإنفيرون.
+
+> [!DANGER] خطوط الأنابيب الآلية لا تتعامل مع تحديثات الإعتمادات في دقيقة. We need to do a manual update before any deployment pipeline runs.
+
+### 1. Manual Updates - Used for updating dependencies, env variables.
+
+1. Stop all instances
+
+```console
+pm2 stop all
+```
+
+2. Install dependencies
+
+```console
+npm ci
+```
+
+3. Build the server
+
+```console
+npm run ensure-env && npm run build:server
+```
+
+4. Start Instances
+
+```console
+pm2 start all --update-env && pm2 logs
+```
+
+### 2. Rolling updates - Used for logical changes to code.
+
+```console
+pm2 reload all --update-env && pm2 logs
+```
+
+> [!NOTE] We are handling rolling updates to code, logic, via pipelines. يجب ألا تحتاج إلى تشغيل هذه الأوامر وهذه الوثائق هنا للوثائق. These are here for documentation.
+
+# Work on Client Instances
+
+1. Install build tools for node binaries (`node-gyp`) etc.
+
+```console
+sudo apt install build-essential
+```
+
+## First Install
+
+Provisioning VMs with the Code
+
+1. Install Node LTS.
+
+2. Update `npm` and install PM2 and setup logrotate and startup on boot
+
+ ```console
+ npm i -g npm
+ npm i -g pm2
+ npm install -g serve
+ pm2 install pm2-logrotate
+ pm2 startup
+ ```
+
+3. Clone client config, setup env and keys.
+
+ ```console
+ git clone https://github.com/freeCodeCamp/client-config.git client
+ cd client
+ ```
+
+ ```console
+ git clone https://github.com/freeCodeCamp/client-config.git client
+ cd client
+ ```
+
+ ابدأ مثيلات العنصر النائب لعميل الويب، سيتم تحديثها مع مصنوعات من أنبوب ازور.
+
+ > Todo: This setup needs to move to S3 or Azure Blob storage
+ >
+ > ```console
+ عملاء-start-Preary.sh --name client-primary
+ صدى "serve -c . /../serve.json www -p 52525" >> client-start-secondary.sh
+ chmod +x client-start-secondary. (ح)
+ pm2 حذف العميل الثانوي
+ pm2 بدء./client-start-secondary.sh --name client-secondary
+```
+
+## تحديث الأمثلة (النفوذ)
+
+```console
+## 1 - قطع الأشجار والرصد
+
+```console
+سجلات pm2
+```
+
+```console
+pm2 monit
+```
+
+## Updating Instances (Maintenance)
+
+Code changes need to be deployed to the API instances from time to time. يمكن أن يكون تحديث متجدد أو تحديث يدوي. الأخير ضروري عند تغيير الإعتمادات أو إضافة متغيرات الإنفيرون.
+
+> [!DANGER] خطوط الأنابيب الآلية لا تتعامل مع تحديثات الإعتمادات في دقيقة. We need to do a manual update before any deployment pipeline runs.
+
+### 1. Manual Updates - Used for updating dependencies, env variables.
+
+1. Stop all instances
+
+ ```console
+ pm2 stop all
+ ```
+
+2. Install or update dependencies
+
+3. Start Instances
+
+ ```console
+ pm2 start all --update-env && pm2 logs
+ ```
+
+### 2. Rolling updates - Used for logical changes to code.
+
+```console
+pm2 reload all --update-env && pm2 logs
+```
+
+> [!NOTE] We are handling rolling updates to code, logic, via pipelines. يجب ألا تحتاج إلى تشغيل هذه الأوامر وهذه الوثائق هنا للوثائق. These are here for documentation.
diff --git a/docs/i18n/Arabic/how-to-catch-outgoing-emails-locally.md b/docs/i18n/Arabic/how-to-catch-outgoing-emails-locally.md
new file mode 100644
index 0000000000..b7526a79e4
--- /dev/null
+++ b/docs/i18n/Arabic/how-to-catch-outgoing-emails-locally.md
@@ -0,0 +1,100 @@
+> **ملاحظة:** هذه خطوة **اختيارية** وهي مطلوبة فقط عند العمل مع مسار عمل البريد الإلكتروني
+
+## مقدمة
+
+بعض تدفقات عمل البريد الإلكتروني، مثل تحديث البريد الإلكتروني للمستخدم، يتطلب خادم api-end لإرسال رسائل البريد الإلكتروني الصادرة. بديل لاستخدام موفر خدمة البريد الإلكتروني لإرسال رسائل البريد الإلكتروني الفعلية، Mailhog هو أداة المطور لاختبار البريد الإلكتروني التي ستحصل على رسائل البريد الإلكتروني المرسلة من مثيل freeCodeCamp الخاص بك.
+
+## تثبيت MailHog
+
+يمكن تثبيت MailHog على macOS و Windows و Linux.
+
+- [مقدمة](#introduction)
+- [تثبيت MailHog](#installing-mailhog)
+ - [تثبيت MailHog على macOS](#installing-mailhog-on-macos)
+ - [تثبيت MailHog على Windows](#installing-mailhog-on-windows)
+ - [تثبيت MailHog على Linux](#installing-mailhog-on-linux)
+- [استخدام MailHog](#using-mailhog)
+- [روابط مفيدة](#useful-links)
+
+### تثبيت MailHog على macOS
+
+تثبيت MailHog على macOS مع [Homebrew](https://brew.sh/):
+
+```bash
+قرع تثبيت mailhog
+خدمات الخبز تبدأ في mailhog
+```
+
+الأوامر المذكورة أعلاه ستبدأ خدمة mailhog في الخلفية.
+
+عند اكتمال التثبيت، يمكنك بدء [باستخدام MailHog](#using-mailhog).
+
+### تثبيت MailHog على Windows
+
+تحميل أحدث إصدار من MailHog من [المستودع الرسمي لـ MailHog](https://github.com/mailhog/MailHog/releases). حدد موقع وانقر على رابط إصدار Windows (32 أو 64 bit) و ملف .exe سيتم تنزيله إلى جهاز الكمبيوتر الخاص بك.
+
+عند اكتمال التنزيل، انقر لفتح الملف. قد يظهر إشعار بجدار الحماية Windows ، لطلب إذن الوصول إلى MailHog. سيفتح موجه سطر الأوامر القياسي لنظام Windows حيث سيتم تشغيل MailHog بمجرد منح الوصول إلى جدار الحماية.
+
+أغلق MailHog عن طريق إغلاق نافذة طلب الأوامر. لبدء تشغيل MailHog مرة أخرى، انقر على MailHog القابل للتنفيذ (. x) الملف الذي تم تنزيله في البداية - ليس من الضروري تنزيل ملف تثبيت MailHog جديد.
+
+ابدأ [باستخدام MailHog](#using-mailhog).
+
+### تثبيت MailHog على Linux
+
+أولاً، قم بتثبيت [اذهب](https://golang.org).
+
+تشغيل الأوامر التالية لتثبيت GO على الأنظمة القائمة على دبيان مثل أوبونتو و لينكس مينتنت.
+
+```bash
+sudo apt-get install golang
+```
+
+تشغيل الأوامر التالية لتثبيت GO على الأنظمة القائمة على RPM، مثل CentOS، فيدورا، Red Hat Linux، إلخ.
+
+```bash
+sudo dnf install golang
+```
+
+بدلاً من ذلك، قم بتشغيل الأوامر التالية لتثبيت GO.
+
+```bash
+sudo yum install golang
+```
+
+الآن قم بتعيين مسار الذهاب مع الأوامر التالية.
+
+```bash
+صدى "تصدير GOPATH=$HOME/go" >> ~/.prof
+صدى 'تصدير PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.prof
+مصدر ~/.profile
+```
+
+أخيرا، أدخل الأوامر أدناه لتثبيت وتشغيل MailHog.
+
+```bash
+go get github.com/mailhog/MailHog
+sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog
+mailhog
+```
+
+ابدأ [باستخدام MailHog](#using-mailhog).
+
+## استخدام MailHog
+
+افتح علامة تبويب أو نافذة جديدة للمتصفح وانتقل إلى [http://localhost:8025](http://localhost:8025) لفتح صندوق الوارد الخاص بك MailHog عند اكتمال تثبيت MailHog وتشغيل MailHog. سيظهر صندوق الوارد مشابه للشاشة التي تلصق أدناه.
+
+
+
+رسائل البريد الإلكتروني المرسلة بواسطة تثبيت freeCodeCamp الخاص بك ستظهر كما يلي
+
+
+
+ستتوفر علامة تبويب تسمح لك بعرض إما نص عادي أو مصدر المحتوى عند فتح بريد إلكتروني معين. تأكد من اختيار علامة التبويب للنص العادي على النحو التالي.
+
+
+
+يجب أن تكون جميع الروابط في البريد الإلكتروني قابلة للنقر والعزم على عنوان URL الخاص بها.
+
+## روابط مفيدة
+
+- تحقق من [MailHog](https://github.com/mailhog/MailHog) مستودع لمزيد من المعلومات المتعلقة بـ MailHog. تتوفر أيضا معلومات إضافية عن تكوينات MailHog المخصصة.
diff --git a/docs/i18n/Arabic/how-to-help-with-video-challenges.md b/docs/i18n/Arabic/how-to-help-with-video-challenges.md
new file mode 100644
index 0000000000..f2d971c2fc
--- /dev/null
+++ b/docs/i18n/Arabic/how-to-help-with-video-challenges.md
@@ -0,0 +1,195 @@
+# كيفية المساعدة في مواجهة تحديات الفيديو
+
+تحديات الفيديو هي نوع جديد من التحديات في منهج FreCodeCamp.
+
+تحدي الفيديو هو جزء صغير من دورة فيديو كاملة عن موضوع معين. صفحة تحدي الفيديو تتضمن فيديو يوتيوب. ولكل صفحة تحدٍ سؤال واحد متعدد الخيارات يتصل بالفيديو. يجب على المستخدم أن يجيب على السؤال بشكل صحيح قبل الانتقال إلى تحدي الفيديو التالي في الدورة.
+
+يتم إنشاء صفحات تحدي الفيديو من قبل أعضاء فريق FreCodeCamp. يتم تحميل مقاطع فيديو اليوتيوب أيضًا من قبل أعضاء فريق FreCodeCamp. والعديد من التحديات التي تواجه الفيديو ليست لها حتى الآن أسئلة مرتبطة بها.
+
+يمكنك المساعدة عن طريق إنشاء أسئلة متعددة الخيارات ذات الصلة بأقسام الفيديو وإضافة الأسئلة إلى ملفات markdown لتحديات الفيديو.
+
+
+## قالب التحدي
+
+فيما يلي نموذج لما تبدو عليه ملفات الـ markdown للتحدي.
+
+````md
+---
+المعرف: معرف فريد (أبجدي رقمي, MongoDB_id)
+العنوان: عنوان التحدي
+نوع التحدي: 11
+معرف الفيديو: 'YouTube videoID لتحدي الفيديو'
+---
+
+## # وصف
+
+
+وصف اختياري مع معلومات مفيدة ذات صلة بالفيديو.
+
+
+## الإختبارات
+
+
+
+'سؤال 'ml
+:
+ نص: 'سؤال'
+ إجابات:
+ - 'الإجابة واحدة'
+ - 'الإجابة الثانية'
+ - 'الإجابة ثلاثية'
+ الحلول: 3
+````
+
+
+````
+
+## Creating questions for video challenges
+
+### Access the video challenge markdown files
+
+You can find the markdown files for video challenges at the following locations in the curriculum:
+
+- [Data Analysis with Python Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course)
+- [TensorFlow 2.0 Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow)
+- [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpy)
+- [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work)
+
+Pick a challenge markdown file from the options above.
+
+### السحابة عبر الفيديو المقترن بالتحدي وإنشاء سؤال اختياري مميز
+
+أولا، ابحث عن معرف الفيديو.
+
+على سبيل المثال، في التعليمة البرمجية التالية من رأس ملف تحدي الفيديو markdown، الفيديو هو "nVAaxZ34k". وينبغي عرض المعلومات في شكل جدول على موقع GitHub.
+````
+---
+معرف: 5e9a093a74c4063ca6f7c14d title: Data Analysis example A ChallengeTpe: 11
+videoId: nVAaxZ34khk
+---
+```
+
+بعد ذلك، الوصول إلى فيديو اليوتيوب باستخدام ذلك المعرف الفيديو. عنوان URL للفيديو سيكون هو:
+https://www.youtube. om/watch?v=[videoId] (إضافة الفيديو إلى عنوان URL بدون أقواس معقوفة)
+
+في المثال أعلاه، عنوان URL هو https://www. outube.com/watch?v=nVAaxZ34khk
+
+سمع فيديو يوتيوب مع معرف الفيديو هذا وفكر في سؤال متعدد الخيارات يستند إلى محتوى الفيديو.
+
+### اضافة السؤال الى ملف markdown
+
+يمكنك اضافة السؤال محليا او مباشرة الى واجهة GitHub ### اضافة السؤال الى ملف markdown
+
+يمكنك اضافة السؤال محليا او مباشرة الى واجهة GitHub لإضافة السؤال محلياً، تحتاج إلى [إعداد freeCodeCamp محلياً](howto-setup-freecodecamp-locally.md). يمكنك أيضًا العثور على الملف على GitHub والنقر على زر التحرير لإضافة السؤال في المتصفح الخاص بك.
+
+إذا لم يكن السؤال قد أضيف بعد إلى تحدي فيديو معين، سيكون لديه السؤال الافتراضي التالي:
+
+```ml
+سؤال:
+ نص:
+ سؤال
+ إجابات:
+ -
+ واحد
+ -
+ إثنان
+ -
+ ثلاثة
+ حلول: 3
+```
+
+قم بتحديث كلمة ”سؤال“ بسؤالك. • تحديث "واحد" و"اثنين" و"ثلاثة" مع الإجابات الممكنة. تأكد من تحديث رقم الحل الذي يكون إجابته صحيحاً. يمكنك إضافة المزيد من الإجابات الممكنة باستخدام نفس التنسيق. ويمكن أن تكون علامات الاقتباس محاطة بالسؤال والإجابات.
+
+#### استخدم markdown لتنسيق سؤالك
+
+أما النص الوارد في السؤال فيتم الرجوع إليه كعلامة مأخوذة من الأسفل. أبسط طريقة لضمان تنسيقه بشكل صحيح هي بدء السؤال بنص `: `، مثل هذا:
+
+```yml
+سؤال:
+ نص:
+ سؤال
+```
+
+ثم تحتاج إلى التأكد من أن سؤالك موجود على سطر جديد وذو مستوى واحد أكثر من `نص: `.
+
+ويمكن استخدام نفس النهج للإجابات، بحيث يصبح السؤال بأكمله
+
+```yml
+سؤال:
+ نص:
+ سؤال
+ إجابات:
+ -
+ الإجابة الأولى
+ -
+ ثانية
+ -
+ الحل الثالث
+ : 2
+```
+
+تأكد من أن كل إجابة معقولة ولكن هناك إجابة صحيحة واحدة فقط.
+
+#### استخدام HTML
+
+يمكن أن تحتوي الأسئلة والإجابات على بعض علامات HTML مثل `
` لسطر جديد. وينبغي استخدام وسوم HTML بشكل ضئيل، عندما لا يمكن التعبير عن الأسئلة بدونها.
+
+### أمثلة على الأسئلة
+
+#### أمثلة بدون HTML
+
+````yml
+سؤال:
+ نص:
+ ماذا يسجل رمز جافا سكريبت هذا إلى وحدة التحكم؟
+ ```js
+ console.log('hello world')؛
+ ````
+
+
+ اختر إجابة!
+ الإجابات:
+ - مرحبا *العالم*
+ - **مرحبا** العالم
+ - مرحبا بالعالم حل: 3
+````
+
+````yml
+سؤال:
+ نص:
+ ما الذي سيطبع بعد تشغيل هذا الكود:
+ ```py
+ العرض = 15
+ ارتفاع = 12. الطباعة (ارتفاع/3)
+ ````
+ الإجابات:
+ - | 39
+ - | 4
+ - 4.0
+ - 5.0
+ - 5 حل: 3
+````
+
+#### مثال مع HTML
+
+```ml
+سؤال:
+ نص:
+ ما الذي سيطبع بعد تشغيل هذا الرمز:
+ عرض = 15
ارتفاع = 12.
الطباعة (ارتفاع/3)
+ إجابات:
+ -
+ 39
+ -
+ 4
+ -
+ 4.
+````
+
+ويدل المثال الأخير على أنه يمكن استخدام HTML، ولكنه ليس مقروءاً كالإصدار بدونه.
+
+لمزيد من الأمثلة، يمكنك النظر إلى ملفات markdown للدورة التالية للفيديو. جميع التحديات لديها بالفعل أسئلة: [بايثون لكل شخص دورة](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody)
+
+## فتح طلب سحب
+
+بعد إنشاء سؤال واحد أو أكثر، يمكنك إدخال تغييرات على فرع جديد و [فتح طلب سحب](how-to-open-a-pull-request.md).
diff --git a/docs/i18n/Arabic/how-to-open-a-pull-request.md b/docs/i18n/Arabic/how-to-open-a-pull-request.md
new file mode 100644
index 0000000000..9c8610692d
--- /dev/null
+++ b/docs/i18n/Arabic/how-to-open-a-pull-request.md
@@ -0,0 +1,179 @@
+# كيفية فتح طلب سحب (PR)
+
+يتيح لك طلب سحب إرسال تغييرات من الشوك الخاص بك على GitHub إلى المستودع الرئيسي لـ freeCodeCamp.org. بمجرد الانتهاء من إجراء تغييرات على التعليمة البرمجية، أو تحديات البرمجة، يجب عليك اتباع هذه المبادئ التوجيهية لإرسال PR.
+
+## إعداد عنوان جيد لـ PR
+
+نوصي باستخدام [عنوان ورسائل تقليدية](https://www.conventionalcommits.org/) للإلتزامات وسحب الطلب. وتتخذ الاتفاقية الشكل التالي:
+
+> `([النطاق/النطاقات الاختيارية]): `
+>
+> وعلى سبيل المثال:
+>
+> `إصلاح (تعلم): اختبارات الدو...بينما تحدي الحلقة`
+
+عند فتح طلب سحب (PR)، يمكنك استخدام أدناه لتحديد النوع والنطاق (اختياري) والوصف.
+
+**النوع:**
+
+| نوع | متى يتم تحديد |
+|:--------- |:------------------------------------------------------------ |
+| إصلاح | تغيير أو تحديث/تحسين وظائف واختبارات ودروس وما إلى ذلك. |
+| الأجرام | فقط إذا كنت تضيف وظائف جديدة، اختبارات، إلخ. |
+| عصى | التغييرات التي لا تتصل بالكود أو الاختبارات أو الدرس الواحد. |
+| المستندات | تغييرات على دليل `/docs` أو المبادئ التوجيهية المساهمة، إلخ. |
+
+**النطاق:**
+
+يمكنك تحديد نطاق من [قائمة التسميات](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope).
+
+**وصف:**
+
+ابقائها قصيرة (أقل من 30 حرفاً) وبسيطة، يمكنك إضافة المزيد من المعلومات في مربع وصف العلاقات العامة والتعليقات.
+
+وفيما يلي بعض الأمثلة على عناوين حقوق الملكية الفكرية الجيدة:
+
+- `إصلاح (أ11y): تحسين تباين شريط البحث`
+- `الميزة: إضافة المزيد من الاختبارات إلى تحديات html و css`
+- `إصلاح (api,العميل): منع أخطاء CORS عند تقديم النموذج`
+- `docs(i18n): الترجمة الصينية للإعداد المحلي`
+
+## اقتراح طلب سحب
+
+1. بمجرد أن يتم الالتزام بالتعديلات، سيتم مطالبتك بإنشاء طلب سحب على صفحة GitHub الخاصة بك.
+
+ 
+
+2. بشكل افتراضي، يجب أن تكون جميع طلبات السحب ضد مخزن FreCodeCamp الرئيسي، `رئيسي` فرع.
+
+ تأكد من أن القاعدة الخاصة بك تم تعيينها على رمز كامب/FreCodeCamp عند رفع طلب سحب.
+
+ 
+
+3. قم بتقديم طلب السحب من فرعك إلى فرع `الكود كامب الرئيسي`
+
+4. في متن حسابك الشخصي يتضمن ملخصاً أكثر تفصيلاً للتغييرات التي قمت بها ولماذا.
+
+ - سيتم تقديمك مع قالب طلب الجذب. هذه قائمة مرجعية كان يجب عليك متابعتها قبل فتح طلب السحب.
+
+ - قم بتعبئة التفاصيل كما تراها مناسبة. وسيتم استعراض هذه المعلومات وسيقرر المراجعون ما إذا كان طلب السحب الخاص بك قد قُبل أم لا.
+
+ - إذا كان الغرض من اللعبة هو معالجة مشكلة GitHub موجودة عندئذ، في نهاية جسم وصف PR، استخدم الكلمة المفتاحية _يغلق_ مع رقم المشكلة [أغلق هذه المشكلة تلقائيًا إذا تم قبول ودمج الـ PR](https://help.github.com/en/articles/closing-issues-using-keywords).
+
+ > على سبيل المثال: `إغلاق #123` سيغلق المشكلة 123
+
+5. حدد ما إذا كنت قد اختبرت على نسخة محلية من الموقع أم لا.
+
+ هذا مهم جداً عند إجراء تغييرات لا تقتصر على تعديل محتوى النص مثل التوثيق أو وصف التحدي. وتشمل أمثلة التغييرات التي تحتاج إلى اختبار محلي جافا سكريبت أو CSS أو HTML التي يمكن أن تغير وظيفة أو تخطيط الصفحة.
+
+## تعليقات على طلبات السحب
+
+> تهانينا! :tada: حول إجراء كلمة مرور وشكرا جزيلا على تخصيص الوقت للإسهام.
+
+سوف يلقي المشرفون الآن نظرة ويتركون لك ردود الفعل. يرجى التحلي بالصبر مع زملائهم المشرفين واحترام وقتهم. ويتم استعراض جميع طلبات السحب في الوقت المناسب.
+
+إذا كنت بحاجة إلى أي مساعدة يرجى المناقشة في [غرفة الدردشة المساهمين](https://gitter.im/FreeCodeCamp/Contributors)، نحن سعداء للغاية لمساعدتك.
+
+> [!تلميح] إذا كنت ترغب في المساهمة بمزيد من طلبات السحب، ننصحك بقراءة [إجراء التغييرات ومزامنة](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) المبادئ التوجيهية لتجنب الاضطرار إلى حذف الشوك.
+
+## تضارب حول طلب السحب
+
+يمكن أن تنشأ تناقضات لأن العديد من المساهمين يعملون على المستودع، والتغييرات يمكن أن تحطم حسابك الشخصي الذي هو في انتظار المراجعة والدمج.
+
+وفي كثير من الأحيان قد لا تحتاج إلى قاعدة جديدة، لأننا نهدم جميع الالتزامات، ولكن إذا كان طلب إعادة قاعدة هنا هو ما ينبغي أن تفعله.
+
+### لإصلاح الأخطاء والميزات المعتادة
+
+عندما تعمل على الأخطاء والميزات العادية في فرع التطوير `الرئيسي`، يمكنك القيام بإعادة قاعدة بسيطة:
+
+1. استند إلى نسختك المحلية:
+
+ ```console
+ git دفع
+ git سحب --rebase الرئيسي في أعلى المجرى
+ ```
+
+2. حل أي تعارضات وإضافة / تحرير الالتزامات
+
+ ```console
+ # إما
+ git يضيف.
+ git الالتزام -m "chore: حل التعارضات"
+
+ # أو
+ git إضافة.
+ git الالتزام --تعديل --عدم تحرير
+ ```
+
+3. قم بالعودة إلى التغييرات الخاصة بك في بطاقة PR
+
+ ```console
+ git push --أصل القوة
+ ```
+
+### للمناهج الدراسية والمميزات القادمة
+
+عندما تعمل على الميزات الخاصة بفروع المناهج الدراسية `التالية*` ، لديك اختيار الكرز:
+
+1. تأكد من أن أعلى البث يأتي في تزامن مع اللغة المحلية الخاصة بك:
+
+ ```console
+ git الخروج الرئيسي
+ git يجلب --كل --prune
+ git الخروج التالي لمشاريع python-
+ git إعادة تعيين --مشاريع Python التالية - Python
+ ```
+
+2. أخذ نسخة احتياطية
+
+ (أ) (أ) إما حذف الفرع المحلي الخاص بك بعد أخذ نسخة احتياطية (إذا كنت لا تزال لديك محلياً):
+
+ ```console
+ git الخروج
+
+ # مثال:
+ # git Checout feat/add-numpy-video-question
+
+ git Checout -b
+
+ # مثال:
+ # git Checout -b backup-feat/add-numpy-video-question
+
+ git branch -D
+ ```
+
+ (ب) (ب) أو مجرد نسخة احتياطية لفرع pr الخاص بك (إذا لم يكن لديك محلياً):
+
+ ```console
+ git الخروج -b الأصل /
+
+ # مثال:
+ # git Checout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question
+ ```
+
+4. البدء بصفحة نظيفة:
+
+ ```console
+ git الدفع -b مشاريع python-
+ git cherry-seleck
+ ```
+
+5. حل أي تضارب، وتنظيف، وتثبيت اختبارات التشغيل
+
+ ```console
+ npm تشغيل نظيفة
+
+ npm ci
+ npm تشغيل الاختبار:منهج --superblock=
+
+ # مثال:
+
+ # npm تشغيل الاختبار:منهج --superblock=python-for-all person
+
+ ```
+
+6. إذا بدا كل شيء جيدًا ضحك للعودة إلى اللعبة
+
+ ```console
+ git push --أصل القوة
+ ```
diff --git a/docs/i18n/Arabic/how-to-setup-freecodecamp-locally.md b/docs/i18n/Arabic/how-to-setup-freecodecamp-locally.md
new file mode 100644
index 0000000000..e97403a870
--- /dev/null
+++ b/docs/i18n/Arabic/how-to-setup-freecodecamp-locally.md
@@ -0,0 +1,546 @@
+اتبع هذه المبادئ التوجيهية لإنشاء FreCodeCamp محليا على نظامك. وهذا أمر موصى به بشدة إذا كنت ترغب في المساهمة بانتظام.
+
+لبعض تدفقات العمل المساهمة، تحتاج إلى أن يكون CodeCamp يعمل محلياً. على سبيل المثال، معاينة تحديات البرمجة أو تصحيح الأخطاء وإصلاحها في الكود البرمجي.
+
+> [!TIP] إذا كنت غير مهتم بإعداد freeCodeCamp محليا التفكير في استخدام Gitpod، بيئة ديف مجانية على الإنترنت.
+>
+> [](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
+>
+> (يبدأ بيئة dev جاهزة للبرمجة ل freeCodeCamp في المتصفح الخاص بك.)
+
+## إعداد جهازك المحلي
+
+ابدأ بتثبيت البرنامج الأساسي لنظام التشغيل الخاص بك.
+
+نحن ندعم التطوير بشكل أساسي على أنظمة **\*nix**. يعمل موظفينا ومساهمو مجتمعنا بانتظام مع البرنامج البرمجي باستخدام الأدوات المثبتة على Ubuntu و macOS.
+
+نحن أيضًا ندعم Windows 10 عبر WSL2، الذي يمكنك إعداده عن طريق [قراءة هذا الدليل](/how-to-setup-wsl).
+
+كما يطور بعض أعضاء المجتمع المحلي على Windows 10 محلياً مع Git for Windows (Git Bash)، وأدوات أخرى مثبتة على Windows. ليس لدينا دعم رسمي لهذا الإعداد في هذا الوقت، ونحن نوصي باستخدام WSL2 بدلا من ذلك.
+
+**الشروط:**
+
+| الشروط المسبقة | الإصدار | الحواشي |
+| --------------------------------------------------------------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [Node.js](http://nodejs.org) | `12.x` | [جدول LTS](https://github.com/nodejs/Release#release-schedule) |
+| npm (تأتي مجمعة مع العقدة) | `6.x` | ليس لديها إصدارات LTS، نحن نستخدم الإصدار المجمع مع LTS العقدة |
+| [خادم مجتمع MongoDB](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [ملاحظات الإصدار](https://docs.mongodb.com/manual/release-notes/), ملاحظة: نحن حاليا في `3.6`, [من المقرر ترقية](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). |
+
+> [!DANGER] إذا كان لديك إصدار مختلف، الرجاء تثبيت الإصدار الموصى به. يمكننا فقط دعم مشاكل التثبيت للإصدارات الموصى بها. راجع [استكشاف الأخطاء](#troubleshooting) للحصول على التفاصيل.
+
+إذا تم بالفعل تثبيت Node.js على جهازك، قم بتشغيل الأوامر التالية للتحقق من صحة الإصدار:
+
+```console
+العقدة -v
+npm -v
+```
+
+> [!TIP] نحن نوصي بشدة بالتحديث إلى أحدث إصدارات ثابتة من البرامج المذكورة أعلاه، والمعروفة أيضًا باسم إصدارات الدعم الطويل الأجل.
+
+بمجرد أن يكون لديك المتطلبات الأساسية مثبتة، تحتاج إلى إعداد بيئة التطوير الخاصة بك. وهذا أمر شائع بالنسبة للعديد من تدفقات العمل التطويري، وسوف تحتاج إلى القيام بذلك مرة واحدة فقط.
+
+**اتبع هذه الخطوات لجعل البيئة التنموية الخاصة بك جاهزة:**
+
+1. قم بتثبيت [Git](https://git-scm.com/) أو عميل Git المفضل لديك، إذا لم تكن قد فعلت ذلك بالفعل. التحديث إلى أحدث إصدار؛ الإصدار الذي تم تجميعه مع نظام التشغيل الخاص بك قد يكون قديما.
+
+2. (اختياري ولكن مستحسن) [إعداد مفتاح SSH](https://help.github.com/articles/generating-an-ssh-key/) لـ GitHub.
+
+3. قم بتثبيت محرر تعليمة برمجية من اختيارك.
+
+ نوصي بشدة باستخدام [Visual Studio Code](https://code.visualstudio.com/) أو [Atom](https://atom.io/). هذه محررات برمجية عظيمة ومجانية ومفتوحة المصدر.
+
+4. إعداد سطر لمحرر التعليمات البرمجية الخاص بك.
+
+ يجب أن يكون لديك [ESLint قيد التشغيل في محررك](http://eslint.org/docs/user-guide/integrations.html)، وستسلط الضوء على أي شيء لا يتوافق مع [دليل نمط جافا سكريبت في FreCodeCamp](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121).
+
+ > [تلميح] من فضلك لا تتجاهل أي أخطاء في التنبيه. القصد منها **مساعدتك** وضمان وجود شفرة نظيفة وبسيطة.
+
+## اشترك في المستودع على GitHub
+
+[الطلب](https://help.github.com/articles/about-forks/) هو خطوة حيث تحصل على نسخة خاصة بك من مستودع FreCodeCamp الرئيسي (يعرف أيضا باسم _repo_) على GitHub.
+
+هذا أمر أساسي، لأنه يسمح لك بالعمل على نسختك الخاصة من FreCodeCamp على GitHub، أو لتحميل (استنساخ) مستودعك للعمل محلياً. في وقت لاحق، سوف تكون قادراً على طلب تغييرات لكي يتم سحبها إلى المستودع الرئيسي من الشوك الخاص بك عبر طلب سحب (PR).
+
+> [!TIP] المستودع الرئيسي في `https://github.com/freeCodeCamp/freeCodeCamp` غالبا ما يشار إليه على أنه `مستودع أعلى`.
+>
+> الشوك الخاص بك في `https://github.com/YOUR_USER_NAME/freeCodeCamp` غالبا ما يشار إليه على أنه مستودع المنشأ ``.
+
+**اتبع هذه الخطوات لتشوه `https://github.com/freeCodeCamp/freeCodeCamp` مستودع:**
+
+1. انتقل إلى مستودع FreCodeCamp على GitHub:
+
+2. انقر فوق زر "Fork" في الزاوية العلوية اليمنى من الواجهة ([المزيد من التفاصيل هنا](https://help.github.com/articles/fork-a-repo/))
+
+3. بعد أن يتم طلب المستودع، سيتم نقلك إلى نسختك من مستودع freeCodeCamp في `https://github.com/YOUR_USER_NAME/freeCodeCamp`
+
+
+
+ كيف تشوه رمز المخيم الحرة على GitHub (لقطة شاشة)
+
+
+
+
+
+
+## استنساخ شوكك من GitHub
+
+[استنساخ](https://help.github.com/articles/cloning-a-repository/) هو المكان الذي تقوم فيه **بتنزيل** نسخة من مستودع من موقع `بعيد` تملكه أو يملكه شخص آخر. في حالتك ، هذا الموقع البعيد هو `فورك` الخاص بك من علبة freeCodeCamp التي يجب أن تكون متاحة على `https://github.com/YOUR_USER_NAME/freeCodeCamp`.
+
+تشغيل هذه الأوامر على جهازك المحلي:
+
+1. فتح المحطة الطرفية / الأوامر الفورية / Shell في دليل مشاريعك
+
+ _i..: `/yourprojectsdirectory/`_
+
+2. استنسخ شوكك من FreCodeCamp، واستبدل `YOUR_USER_NAME` باسم مستخدم GitHub الخاص بك
+
+ ```console
+ git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git
+ ```
+
+سيؤدي هذا إلى تحميل مستودع FreCodeCamp بأكمله إلى دليل مشاريعك.
+
+ملاحظة: `--depth=1` ينشئ نسخة ضحلة من فورك، مع فقط أحدث التاريخ/الالتزام.
+
+## إعداد المزامنة من الأصل
+
+الآن بعد أن قمت بتنزيل نسخة من فورك، ستحتاج إلى إعداد `أعلى من` عن بعد إلى المستودع الأصلي.
+
+[كما ذكر سابقاً](#fork-the-repository-on-github)، تم إحالة المستودع الرئيسي `مستودع في مرحلة ما قبل التشغيل`. الشوك الخاص بك مشار إليه على أنه مستودع `الأصل`
+
+تحتاج إلى مرجع من استنساخك المحلية إلى مستودع `أعلى مسار` بالإضافة إلى مستودع `الأصل`. هذا يعني أنك تستطيع مزامنة التغييرات من المستودع الرئيسي دون الحاجة إلى التشيك والاستنساخ بشكل متكرر.
+
+1. تغيير الدليل إلى مجلد freeCodeCamp الجديد:
+
+ ```console
+ cd Free CodeCamp
+ ```
+
+2. إضافة مرجع عن بعد إلى مستودع FreCodeCamp الرئيسي:
+
+ ```console
+ git قم بإضافة أعلى مجرى https://github.com/freeCodeCamp/freeCodeCamp.git
+ ```
+
+3. تأكد من أن التهيئة تبدو صحيحة:
+
+ ```console
+ git البعيد -v
+ ```
+
+ يجب أن يبدو المخرجات شيئا كأدناه:
+
+ ```console
+ الأصل https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch)
+ الأصل https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push)
+ أعلى المسار https://github.com/freeCodeCamp/freeCodeCamp.git (fetch)
+ أعلى المسار https://github.com/freeCodeCamp/freeCodeCamp.git (push)
+ ```
+
+## تشغيل FreCodeCamp محليا
+
+الآن بعد أن كان لديك نسخة محلية من معسكر FreCodep ، يمكنك اتباع هذه التعليمات لتشغيلها محلياً. سيسمح لك هذا بما يلي:
+
+- معاينة التعديلات للصفحات كما ستظهر على منصة التعلم.
+- العمل على قضايا واجهة المستخدم والتعزيزات.
+- تصحيح الأخطاء وإصلاح المشكلات مع خوادم التطبيق وتطبيقات العميل.
+
+إذا كنت تواجه مشكلات، قم أولاً بإجراء بحث على الويب عن مشكلتك لمعرفة ما إذا كان قد تم الرد عليها بالفعل. إذا لم تتمكن من العثور على حل، الرجاء البحث عن [مشكلات GitHub](https://github.com/freeCodeCamp/freeCodeCamp/issues) للحصول على حل والإبلاغ عن المشكلة إذا لم يتم الإبلاغ عنها بعد.
+
+وكما هو الحال دائما، لا تتردد في الربط مع [مساهمين في غرفة الدردشة على Gitter](https://gitter.im/FreeCodeCamp/Contributors) أو [خادم ديسكورد](https://discord.gg/6vJYm9V)، للاستفسارات السريعة.
+
+> [تلميح] يمكنك تخطي تشغيل FreCodeCamp محليا إذا كنت ببساطة تقوم بتحرير الملفات. على سبيل المثال، إجراء `إعادة قاعدة`أو حل `تنازع الدمج`.
+>
+> بإمكانك دائماً العودة إلى هذا الجزء من التعليمات في وقت لاحق. يجب عليك **** تخطي هذه الخطوة فقط إذا كنت لا تحتاج إلى تشغيل التطبيقات على جهازك.
+>
+> [تخطي لإجراء التغييرات](#making-changes-locally).
+
+### تكوين الإعتمادات
+
+#### الخطوة 1: إعداد ملف متغير البيئة
+
+يتم تخزين مفاتيح API الافتراضية ومتغيرات البيئة في الملف `sample.env`. يحتاج هذا الملف إلى نسخ إلى ملف جديد يسمى `.env` الذي يتم الوصول إليه بشكل ديناميكي أثناء خطوة التثبيت.
+
+```console
+# إنشاء نسخة من "sample.env" واسمها ".env".
+# احضره بمفاتيح API والأسرار اللازمة:
+
+# macOS / Linux
+عينة cp nv .env
+
+# Windows
+نسخ sample.env .env
+```
+
+المفاتيح في ملف `.env` ليست __ مطلوبة للتغيير لتشغيل التطبيق محلياً. يمكنك ترك القيم الافتراضية نسخة من `sample.env` كما هي.
+
+> [!TIP] ضع نصب أعينك إذا كنت تريد استخدام خدمات مثل Auth0 أو Algolia، سوف تحتاج إلى الحصول على مفاتيح API الخاصة بك لهذه الخدمات وتحرير المدخلات تبعاً لذلك في `. nv` ملف
+
+#### الخطوة 2: تثبيت الإعتمادات
+
+سيتم تثبيت هذه الخطوة التبعيات المطلوبة للتطبيق لتشغيل:
+
+```console
+npm ci
+```
+
+#### الخطوة 3: بدء MongoDB وبذور قاعدة البيانات
+
+قبل أن يكون بإمكانك تشغيل الطلب محلياً، يتوجب عليك البدء في خدمة MongoDB.
+
+> [!NOTE] ما لم يكن لديك MongoDB قيد التشغيل في إعداد مختلف عن الافتراضي، عنوان URL المخزن كقيمة `MONGOHQ_URL` في `. nv` يجب أن يعمل الملف بشكل جيد. إذا كنت تستخدم تكوين مخصص، قم بتعديل هذه القيمة حسب الحاجة.
+
+بدء تشغيل خادم MongoDB في محطة طرفية منفصلة:
+
+- على macOS & Ubuntu:
+
+ ```console
+ mongod
+ ```
+
+- على Windows، يجب عليك تحديد المسار الكامل إلى `mongod` الثنائي
+
+ ```console
+ "C:\Program files\MongoDB\Server\3.6\bin\mongod"
+ ```
+
+ تأكد من استبدال `3.6` بالإصدار الذي قمت بتثبيته
+
+> [تلميح] يمكنك تجنب الحاجة إلى بدء MongoDB في كل مرة عن طريق تثبيته كخدمة خلفية. يمكنك [معرفة المزيد عنها في وثائقها لنظام التشغيل الخاص بك](https://docs.mongodb.com/manual/administration/install-community/)
+
+بعد ذلك، دعونا نؤسس قاعدة البيانات. في هذه الخطوة، نقوم بتشغيل الأمر أدناه الذي يملأ خادم MongoDB ببعض مجموعات البيانات الأولية المطلوبة من الخدمات. وتشمل هذه البرامج عددا قليلا من المخططات، من بين أمور أخرى.
+
+```console
+npm تشغيل البذور
+```
+
+#### الخطوة 4: بدء تطبيق برنامج FreCodeCamp وخادم API
+
+يمكنك الآن بدء تشغيل خادم API وتطبيقات العميل.
+
+```console
+npm قيد التطوير
+```
+
+هذا الأمر المنفرد سيطلق جميع الخدمات، بما في ذلك خادم API وتطبيقات العميل المتاحة لك للعمل.
+
+> [!ملاحظة] مرة واحدة، افتح متصفح ويب و **قم بزيارة **. إذا قام التطبيق بتحميل، تهانينا - أنت معيّن! لديك الآن نسخة من منصة التعلم الخاصة بـ FreCodeCamp تعمل على جهازك المحلي.
+
+> [!TIP] خادم API يخدم APIs في `http://localhost:3000`. تطبيق Gatsby يخدم تطبيق العميل في `http://localhost:8000`
+
+> إذا قمت بزيارة يجب أن ترى APIs المتاحة.
+
+## تسجيل الدخول باستخدام مستخدم محلي
+
+الإعداد المحلي الخاص بك يقوم تلقائياً بتجميع مستخدم محلي في قاعدة البيانات. الضغط على زر `تسجيل الدخول` سيصادقك تلقائياً في التطبيق المحلي.
+
+ومع ذلك، فإن الوصول إلى صفحة حافظة المستعملين أمر صعب بعض الشيء. في مرحلة التطوير، Gatsby يتسلم خدمة صفحات العملاء وبالتالي ستحصل على صفحة `404` لحافظة المستخدم عند العمل محليا.
+
+ببساطة النقر على زر **"معاينة الصفحة 404"** سيتم توجيهك إلى الصفحة الصحيحة.
+
+
+
+ كيفية تسجيل الدخول عند العمل محليا (لقطة الشاشة)
+
+
+
+
+
+
+## إجراء التغييرات محليا
+
+يمكنك الآن إجراء تغييرات على الملفات وإلزام بتغييراتك على النسخة المحلية من الشوك.
+
+اتبع هذه الخطوات:
+
+1. التحقق من أنك في فرع `الرئيسي`:
+
+ ```console
+ git status
+ ```
+
+ يجب أن تحصل على ناتج مثل هذا:
+
+ ```console
+ في سيد الفرع
+ فرعك محدث بـ 'الأصلي/الماجستير'.
+
+ لا شيء للالتزام، دليل العمل تنظيف
+ ```
+
+ إذا لم تكن على رأس أو أن دليل العمل الخاص بك غير نظيف، قم بحل أي ملفات/التزامات معلقة وسحب `الرئيسي`:
+
+ ```console
+ سيد عملية الدفع
+ ```
+
+2. مزامنة أحدث التغييرات من فرع FreCodeCamp upstream `الرئيسي` إلى الفرع الرئيسي المحلي الخاص بك:
+
+ > [تحذير] إذا كان لديك أي طلب سحب معلق قمت به من فرع `الأستاذ` في فورمك، سوف تفقدهم في نهاية هذه الخطوة.
+ >
+ > يجب عليك التأكد من دمج طلب السحب الخاص بك من قبل مشرف قبل تنفيذ هذه الخطوة. لتجنب هذا السيناريو، يجب عليك **دائمًا** العمل على فرع غير `الرئيسي`.
+
+ هذه الخطوة **ستقوم بمزامنة أحدث التغييرات** من المستودع الرئيسي لـ freeCodeCamp. من المهم أن تقوم بإعادة بناء فرعك على قمة أحدث `برتقال/رشد` في أغلب الأحيان لتجنب التضارب لاحقاً.
+
+ قم بتحديث نسختك المحلية من مستودع FreCodeCamp في أعلى مجال:
+
+ ```console
+ Git يجلب أعلى مجرى
+ ```
+
+ قم بإعادة تعيين فرعك الرئيسي مع سيد رمز المخيم:
+
+ ```console
+ إعادة تعيين git - أعلى التدفق/إتقان
+ ```
+
+ دفع فرعك الرئيسي إلى منشئك للحصول على تاريخ نظيف على الشوك الخاص بك على GitHub:
+
+ ```console
+ Git دفع الأصل الرئيسي - القوة
+ ```
+
+ يمكنك التحقق من مطابقتك الرئيسية الحالية للتبسيط/الأستاذ عن طريق أداء مختلف:
+
+ ```console
+ Git تقطع في واجهة التدفق/إتقان
+ ```
+
+ وينبغي أن يكون الناتج الناتج الناتج فارغاً.
+
+3. إنشاء فرع جديد جديد:
+
+ العمل على فرع منفصل لكل مشكلة يساعدك في الحفاظ على نسخة عملك المحلي نظيفة. يجب ألا تعمل أبدا على `سيد`. سيؤدي هذا إلى تربة نسختك من CodeCamp وقد تضطر إلى البدء باستنساخ جديد أو شوك.
+
+ تحقق من أنك على `سيد` كما تم شرحه سابقاً، والفرع من هناك:
+
+ ```console
+ git الدفع -b إصلاح/تحديث الدليل-لxyz
+ ```
+
+ يجب أن يبدأ اسم فرعك بـ `إصلاح/`، `الميزة /`، `docs/`، إلخ. تجنب استخدام أرقام المشاكل في الفروع. ابقائها قصيرة ومفيدة وفريدة.
+
+ وفيما يلي بعض الأمثلة على أسماء الفروع الجيدة:
+
+ ```md
+ إصلاح/update-Challenes-for-react
+ fix/update-guide-for-html-css
+ fix/platform-bug-sign-issues
+ feat/add-guide-article-for-javascript
+ translate/add-spanish-basic-html
+ ```
+
+4. تحرير الصفحات والعمل على التعليمات البرمجية في محرر النص المفضل لديك.
+
+5. بمجرد أن تكون سعيدا بالتغييرات يجب عليك اختياريا تشغيل FreCodeCamp محليا لمعاينة التغييرات.
+
+6. تأكد من إصلاح أي أخطاء والتحقق من تنسيق التغييرات الخاصة بك.
+
+7. تحقق من الملفات التي تقوم بتحديثها وتأكيدها:
+
+ ```console
+ git status
+ ```
+
+ يجب أن يظهر هذا قائمة من الملفات `غير مهيأة` التي قمت بتعديلها.
+
+ ```console
+ على الميزة/التوثيق الفرعي
+ فرعك محدث مع 'upstream/feat/documentation'.
+
+ التغييرات غير معدة للالتزام:
+ (استخدم "git add/rm ... لتحديث ما سيتم الالتزام به)
+ (استخدم "git Checout -- . " لاستبعاد التغييرات في دليل العمل)
+
+ معدل: المواصلات. (د)
+ معدلة: docs/README.md
+ معدلة: docs/how-to-setup-freecodecamp-محليا. (د)
+ معدلة: docs/howto-work-on-guide-articles.md
+...
+ ```
+
+8. مرحلة التغييرات والتعهد بما يلي:
+
+ في هذه الخطوة، يجب عليك فقط وضع علامة على الملفات التي قمت بتعديلها أو إضافتها بنفسك. يمكنك إجراء إعادة تعيين وحل الملفات التي لم تكن تنوي تغييرها إذا لزم الأمر.
+
+ ```console
+ git اضف المسار/إلى/my/changed/file.ext
+ ```
+
+ أو يمكنك إضافة جميع ملفات `غير مهيأة` إلى منطقة التجهيز:
+
+ ```console
+ git يضاف
+ ```
+
+ فقط الملفات التي تم نقلها إلى منطقة التجهيز سيتم إضافتها عندما تقوم بالالتزام.
+
+ ```console
+ git status
+ ```
+
+ الناتج:
+
+ ```console
+ على الميزة/التوثيق الفرعي
+ فرعك محدث مع 'upstream/feat/documentation'.
+
+ التغييرات التي سيتم الالتزام بها:
+ (استخدم "git reset HEAD ..." لإلغاء المرحلة)
+
+ معدلة: CONTRIBUTING.md
+ معدل: docs/README.md
+ معدلة: docs/how-to-setup-freecodecamp-locally.md
+ معدل: docs/howto-work-on-guide-articles.md
+ ```
+
+ الآن، يمكنك إجراء التغييرات الخاصة بك برسالة قصيرة مثل هذا:
+
+ ```console
+ git الالتزام -m "إصلاح: رسالة الالتزام القصيرة"
+ ```
+
+ بعض الأمثلة:
+
+ ```md
+ إصلاح: تحديث مقالة دليل جافا - لميزة حلقة
+ : إضافة مقالة دليل لمهارات ألكسا
+ ```
+
+ اختياري:
+
+ ونحن نوصي بشدة بتوجيه رسالة التزام تقليدية. هذه ممارسة جيدة سوف تراها في بعض مستودعات المصادر المفتوحة الشائعة. كمطور، هذا يشجعك على اتباع الممارسات القياسية.
+
+ وفيما يلي بعض الأمثلة على رسائل الالتزام التقليدية:
+
+ ```md
+ إصلاح: تحديث مقالة دليل HTML
+ إصلاح: تحديث نسخة البرامج النصية لبناء خاصية Tra/5/Add.CI
+ : إضافة مقالة لتحميل JavaScript
+ docs: تحديث المبادئ التوجيهية المساهمة
+ ```
+
+ حافظ على هذه الأحرف القصيرة، لا أكثر من 50 حرفاً. يمكنك دائماً إضافة معلومات إضافية في وصف رسالة الالتزام.
+
+ هذا لا يستغرق أي وقت إضافي من رسالة غير تقليدية مثل 'تحديث الملف' أو 'إضافة index.md'
+
+ يمكنك معرفة المزيد حول لماذا يجب عليك استخدام الإلتزامات التقليدية [هنا](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits).
+
+9. إذا أدركت أنك بحاجة إلى تعديل ملف أو تحديث رسالة الالتزام بعد التعهد يمكنك القيام بذلك بعد تعديل الملفات مع:
+
+ ```console
+ git ملتزمة--تعديل
+ ```
+
+ سيؤدي هذا إلى فتح محرر نص افتراضي مثل `nano` أو `vi` حيث يمكنك تعديل عنوان رسالة الالتزام وإضافة/تحرير الوصف.
+
+10. بعد ذلك، يمكنك دفع التغييرات الخاصة بك إلى الشوك:
+
+ ```console
+ git دفع الأصل/فرع/اسم هنا
+ ```
+
+## اقتراح طلب سحب (PR)
+
+بعد إجراء التغييرات الخاصة بك، تحقق هنا من [كيفية فتح طلب السحب](how-to-open-a-pull-request.md).
+
+## مرجع الأوامر السريعة
+
+مرجع سريع للأوامر التي ستحتاج إليها عند العمل محلياً.
+
+| أمر | الوصف |
+| ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
+| `npm ci` | تثبيت / إعادة تثبيت جميع التبعيات و التمهيدات، مختلف الخدمات. |
+| `npm تشغيل البذور` | يقوم بتحليل جميع ملفات الـ markdown التحدي وإدراجها في MongoDB. |
+| `npm قيد التطوير` | يبدأ تشغيل خادم API و تطبيقات العميل الخاص بـ FreCodeCamp |
+| `npm اختبار` | تشغيل جميع اختبارات JS في النظام، بما في ذلك اختبارات العملاء والخادم والخط الخطي والتحديات. |
+| `npm قم بتشغيل الاختبار:client` | تشغيل مجموعة اختبار العميل. |
+| `npm تشغيل الاختبار:منهج دراسي` | تشغيل مجموعة اختبار المناهج الدراسية. |
+| `npm قم بتشغيل الاختبار:منهج --block='HTML الأساسي و HTML5'` | اختبر كتلة محددة. |
+| `npm قم بتشغيل الاختبار:منهج --superblock='responve-web-design'` | اختبر بلوك سوبر بلوك محدد. |
+| `npm تشغيل اختبار المنهج الدراسي الكامل` | تشغيل مجموعة اختبار المنهج، دون الإنقاذ بعد الخطأ الأول |
+| `npm قم بتشغيل الاختبار:server` | تشغيل جناح اختبار الخادم. |
+| `npm تشغيل e2e` | تشغيل نهاية Cypress إلى اختبارات النهاية. |
+| `npm تشغيل التنظيف` | إلغاء تثبيت جميع التبعيات وتنظيف المخبآت. |
+
+## استكشاف الأخطاء
+
+### مشاكل في تثبيت الشروط المسبقة الموصى بها
+
+نقوم بانتظام بتطوير أحدث نظم التشغيل أو أكثرها شعبية مثل MacOS 10.15 أو أكثر، أو Ubuntu 18.04 أو بعدها و Windows 10 (مع WSL2).
+
+من المستحسن البحث في مشكلتك المحددة حول الموارد مثل جوجل، ستراك أفلاك، بورصة البورصة. هناك فرصة جيدة لأن يواجه شخص ما نفس المشكلة وهناك بالفعل إجابة على استفسارك المحدد.
+
+إذا كنت على نظام تشغيل مختلف و/أو لا تزال تواجه مشكلات، راجع [الحصول على المساعدة](#getting-help).
+
+> [تحذير]
+>
+> الرجاء تجنب إنشاء مشاكل GitHub للمشكلات الأساسية. وهي خارج نطاق هذا المشروع.
+
+### مشكلات مع واجهة المستخدم، الخطوط، أخطاء البناء إلخ.
+
+إذا واجهت مشاكل مع واجهة المستخدم، خطوط أو شاهد أخطاء في الإنشاءات، يمكن أن يكون التنظيف مفيداً:
+
+```console
+npm تشغيل نظيف
+npm ci
+npm تشغيل بذرة
+npm قيد التطوير
+```
+
+أو
+
+استخدام الاختصار
+
+```
+npm تشغيل نظيف وتطوير
+```
+
+إذا استمرت في مواجهة المشكلات مع البناء، فينصح بتنظيف مساحة العمل.
+
+استخدم `git Cle` في الوضع التداخلي:
+
+```
+git Cle-ifdX
+```
+
+
+
+ كيفية تنظيف الملفات الغير متعقبة (لقطة شاشة)
+
+
+
+
+
+
+### مشكلات مع API، تسجيل الدخول، عروض التحدي، إلخ.
+
+إذا لم تتمكن من تسجيل الدخول، وبدلا من ذلك سترى لافتة تحمل رسالة خطأ بأنه سيتم الإبلاغ عنها في معسكر FreCode، الرجاء التحقق مرتين من أن المنفذ المحلي الخاص بك `3000` غير مستخدم من قبل برنامج مختلف.
+
+**على Linux / macOS / WSL على Windows - من المحطة الطرفية:**
+
+```console
+netstat -ab grep "3000"
+
+tcp4 0 0.0.0.0:3000 DESKTOP LISTEN
+```
+
+**على Windows - من قوة عالية :**
+
+```powershell
+netstat -ab Select-String "3000"
+
+TCP 0.0.0:3000 DESKTOP LSTENING
+```
+
+### مشكلات تثبيت الإعتمادات
+
+إذا حصلت على أخطاء أثناء تثبيت التبعيات، الرجاء التأكد من أنك لست في شبكة مقيدة أو أن إعدادات جدار الحماية الخاص بك لا تمنعك من الوصول إلى الموارد.
+
+أول مرة يمكن أن يستغرق فيها الإعداد بعض الوقت اعتماداً على عرض النطاق الترددي لشبكتك. كن صبورا، وإذا كنت مازلت عالقة قمنا بإستخدام GitPod بدلاً من إعداد غير متصل.
+
+## الحصول على المساعدة
+
+إذا كنت عالقا وتحتاج إلى مساعدة، دعنا نعرف عن طريق السؤال في فئة ['المساهمين' في المنتدى](https://forum.freecodecamp.org/c/contributors) أو [غرفة الدردشة المساهمين](https://gitter.im/FreeCodeCamp/Contributors) على Gitter.
+
+قد يكون هناك خطأ في وحدة التحكم في المتصفح الخاص بك أو في Bash / المحطة الطرفية / سطر الأوامر الذي سيساعد على تحديد المشكلة. قم بتوفير رسالة الخطأ هذه في وصف المشكلة الخاص بك حتى يتمكن الآخرون من تحديد المشكلة بسهولة أكبر ومساعدتك في العثور على حل.
diff --git a/docs/i18n/Arabic/how-to-setup-wsl.md b/docs/i18n/Arabic/how-to-setup-wsl.md
new file mode 100644
index 0000000000..b27d75b526
--- /dev/null
+++ b/docs/i18n/Arabic/how-to-setup-wsl.md
@@ -0,0 +1,129 @@
+# إنشاء FreCodeCamp على نظام ويندوز الفرعي للينوكس (WSL)
+
+> [!ملاحظة] قبل أن تتبع هذه التعليمات تأكد من أن النظام الخاص بك يفي بالمتطلبات
+>
+> **WSL 2**: Windows 10 64-bit (الإصدار 2004، البناء 19041 أو أعلى) - متاح لجميع التوزيعات بما في ذلك Windows 10 Home.
+>
+> **Docker سطح المكتب للويندوز**: انظر المتطلبات ذات الصلة لـ [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) و [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements)
+
+ويغطي هذا الدليل بعض الخطوات الشائعة مع إعداد WSL2. حالما تعالج بعض القضايا المشتركة مع مؤتمر القمة العالمي الثاني المعني بمجتمع المعلومات، يجب أن تكون قادراً على متابعة دليل الإعداد المحلي الخاص بنا للعمل مع FreCodeCamp على ويندوز الذي يقوم بتشغيل شريط WSL مثل Ubuntu.
+
+## تمكين WSL
+
+اتبع الإرشادات في [الوثائق الرسمية](https://docs.microsoft.com/en-us/windows/wsl/install-win10) لتثبيت WSL1 ثم الترقية إلى WSL2.
+
+## Install Ubuntu
+
+1. لقد أوصينا باستخدام Ubuntu-18.04 أو أكثر مع WSL2.
+
+ > [!ملاحظة]
+ >
+ > بينما يمكنك استخدام الأقراص الأخرى غير الديدية، كلها تأتي مع الغوغتشات الخاصة بها وهي خارج نطاق هذا الدليل.
+
+2. تحديث الإعتمادات لنظام التشغيل
+
+ ```console
+ قم بتحديث sudo apt
+ sudo apt upd-y
+
+ # تنظيف
+ sudo apt autoremove -y
+ ```
+
+## إعداد Git
+
+يأتي Git مثبتًا مسبقًا مع Ubuntu 18.04، تحقق من أن إصدار Git الخاص بك مع `git --version`.
+
+```output
+~
+ git --version
+git الإصدار 2.25.1
+```
+
+(اختياري ولكن مستحسن) يمكنك الآن المضي قدما [في إعداد مفاتيح ssh](https://help.github.com/articles/generating-an-ssh-key) مع GitHub.
+
+## تثبيت محرر التعليمات البرمجية
+
+نوصي بشدة بتثبيت [Visual Studio Code](https://code.visualstudio.com) على Windows 10. لديها دعم كبير لـ WSL وتثبيت تلقائياً جميع الإضافات الضرورية على ذاكرة WSL الخاص بك.
+
+بشكل أساسي، سوف تقوم بتعديل وتخزين التعليمات البرمجية الخاصة بك على Ubuntu-18.04 مع تثبيت رمز VS على Windows.
+
+## تثبيت دوكر سطح المكتب
+
+**سطح المكتب الخاص بـ Docker Windows** يسمح لك بتثبيت وتشغيل قاعدة البيانات والخدمات مثل MongoDB, NGINX, الخ. وهذا مفيد لتجنب المآزق المشتركة مع تثبيت MongoDB أو خدمات أخرى مباشرة على Windows أو WSL2.
+
+اتبع دورة التعليمات على [الوثائق الرسمية](https://docs.docker.com/docker-for-windows/install) وقم بتثبيت دوكر سطح المكتب لتوزيع ويندوز الخاص بك.
+
+هناك بعض المتطلبات الدنيا من المعدات لأفضل التجربة.
+
+## تكوين سطح المكتب الخاص بـ Docker لـ WSL
+
+بمجرد تثبيت سطح المكتب Docker ، [اتبع هذه التعليمات](https://docs.docker.com/docker-for-windows/wsl) وتهيئته لاستخدام تثبيت Ubuntu-18.04 كخلفية للنظام.
+
+وهذا يجعل من الممكن تشغيل الحاويات على جانب WSL بدلا من تشغيلها على Windows. ستتمكن من الوصول إلى الخدمات عبر `http://localhost` على كل من Windows و Ubuntu.
+
+## تثبيت MongoDB من Docker Hub
+
+بمجرد تكوين سطح المكتب الخاص بـ Docker للعمل مع WSL2، اتبع هذه الخطوات لبدء خدمة MongoDB:
+
+1. تشغيل محطة Ubuntu-18.04 جديدة
+
+2. سحب `MongoDB 3.6` من Dockerhub
+
+ ```console
+ docker pull mongo:3
+ ```
+
+3. بدء خدمة MongoDB في المنفذ `27017`، وتهيئتها لتشغيلها تلقائيا عند إعادة تشغيل النظام
+
+ ```console
+ docker تشغيل -it \
+ -v mongodata:/data/db \
+ -p 27017:27017 \
+ --name mongodb \
+ --إعادة تشغيل بدون توقف \
+ -d Mongo:3
+ ```
+
+4. يمكنك الآن الوصول إلى الخدمة من Windows أو Ubuntu على `mongodb://localhost:27017`.
+
+## تثبيت Node.js و npm
+
+ننصحك بتثبيت إصدار LTS لـ Node.js مع مدير إصدار العقدة - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating).
+
+بمجرد تثبيت هذه الأوامر لتثبيت واستخدام إصدار Node.js حسب الحاجة
+
+```console
+تثبيت nvm --lts
+
+# OR
+# nvm install
+
+nvm install 14
+
+# Usage
+# nvm use
+
+nvm يستخدم 12
+```
+
+Node.js تأتي مجمعة مع `npm`، يمكنك التحديث إلى أحدث إصدارات `npm` مع:
+
+```console
+npm تثبيت -g npm@latest
+```
+
+## إعداد FreCodeCamp محليا
+
+الآن بعد أن قمت بتثبيت المتطلبات المسبقة، اتبع [دليل الإعداد المحلي الخاص بنا](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) لاستنساخ وتثبيت وإعداد FreCodeCamp محليا على جهازك.
+
+> [تحذير]
+>
+> يرجى ملاحظة أن الإعداد لاختبارات Cypress (وما يتصل بها من احتياجات واجهة المستخدمين) هو عمل جاري. يجب أن تكون قادراً على العمل في معظم الكود البرمجي.
+
+## روابط مفيدة
+
+- [إعداد WSL2 Dev مع Ubuntu 20.04, Node.js, MongoDB, VS Code و Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - مقال من Mrugesh Mohapatra (مطور تاف على freeCodeCamp.org)
+- الأسئلة المتكررة عن:
+ - [نظام Windows الفرعي لـ Linux](https://docs.microsoft.com/en-us/windows/wsl/faq)
+ - [دوكر سطح المكتب للويندوز](https://docs.docker.com/docker-for-windows/faqs)
diff --git a/docs/i18n/Arabic/how-to-use-docker-on-windows-home.md b/docs/i18n/Arabic/how-to-use-docker-on-windows-home.md
new file mode 100644
index 0000000000..44adc6b95f
--- /dev/null
+++ b/docs/i18n/Arabic/how-to-use-docker-on-windows-home.md
@@ -0,0 +1,15 @@
+# كيفية استخدام Docker على Windows Home
+
+هناك بعض الخلل التي يجب تجنبها عند إعداد جهاز الإرسال على Windows Home. أولاً يجب عليك استخدام [صندوق أدوات Docker](https://docs.docker.com/toolbox/toolbox_install_windows/) كمدير. لسوء الحظ لا يدعم Windows Home Docker لنظام Windows Desktop، لذا يجب استخدام علبة الأدوات بدلاً من ذلك. ويجب تشغيله كمدير لأن التركيب يستخدم روابط رمزية، لا يمكن إنشاؤها بخلاف ذلك.
+
+بمجرد تثبيت صندوق الأدوات، قم بتشغيل Docker Quickstart Terminal كمسؤول. سيؤدي هذا إلى إنشاء `آلة افتراضية` إذا لم تكن موجودة بالفعل. وبمجرد حدوث ذلك، أغلق المحطة الطرفية وفتح علبة الافتراضي (مرة أخرى كمدير). يجب أن تكون قادراً على رؤية جهاز `الافتراضي`. الموقع كثيف الموارد، لذلك أوقف الجهاز الافتراضي وارفع من الإعدادات قدر استطاعتك - الذاكرة على وجه الخصوص. وقد تأكد أنه يعمل مع 4 جيغابايت من الرام.
+
+بمجرد أن تكون سعيدا لأن Docker يعمل، استنسخ مستودع FreCodeCamp إلى دليل داخل `C:\Users`. يتم مشاركة هذه الدلائل لمنح دوكر الوصول إلى الدلائل المحلية، والتي تحتاج إليها أثناء التثبيت.
+
+إذا رأيت رسائل مثل
+
+```shell
+باش: change_volumes_owner.sh: لا يوجد مثل هذا الملف أو الدليل
+```
+
+عندما تقوم بتشغيل docker:init `npm` فمن المرجح أن يكون هذا هو المذنب.
diff --git a/docs/i18n/Arabic/how-to-work-on-coding-challenges.md b/docs/i18n/Arabic/how-to-work-on-coding-challenges.md
new file mode 100644
index 0000000000..c4ac76869e
--- /dev/null
+++ b/docs/i18n/Arabic/how-to-work-on-coding-challenges.md
@@ -0,0 +1,543 @@
+# كيفية العمل على تحديات البرمجة
+
+هدفنا هو تطوير تجربة تعلم تفاعلية ممتعة وواضحة.
+
+وتصميم تحديات البرمجة التفاعلية أمر صعب. سيكون من الأسهل بكثير كتابة شرح طويل أو إنشاء دروس فيديو، وهناك مكان للذين على موقع متوسط و يوتيوب. لكن، بالنسبة لمنهجنا الأساسي، نحن ملتزمون بما يصلح لمعظم الناس - تجربة تفاعلية تماما وشبه تجربة لعبة الفيديو.
+
+نريد أن تحقق الكاميرات حالة التدفق. ونريد منهم أن يبنوا زخما وأن ينفجروا من خلال منهجنا الدراسي بأقل عدد ممكن من الزجاج. ونريد لهم أن يدخلوا في المشاريع بثقة وأن يتعرفوا على نطاق واسع على مفاهيم البرمجة.
+
+ويتطلب خلق هذه التحديات إبداعا هائلا واهتماما بالتفاصيل. هناك الكثير من المساعدة المتاحة. ستحصل على دعم من فريق كامل من المساهمين الذين يمكنك أن ترتدي أفكارك وتجريب تحدياتك. ابقى نشطا في [غرفة المساهمين](https://gitter.im/freecodecamp/contributors) واطرح الكثير من الأسئلة.
+
+بمساعدتك يمكننا تصميم منهج تعليمي تفاعلي سوف يساعد ملايين الناس على تعلم البرمجة لسنوات قادمة.
+
+يتم تخزين محتوى كل تحدي في ملف markdown الخاص به. يتم تحويل هذا الملف في وقت لاحق إلى HTML باستخدام أدواتنا لإنشاء صفحات ويب تفاعلية.
+
+يمكنك العثور على كل محتوى المنهج الدراسي لـ freeCodeCamp.org's في دليل [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges).
+
+## إعداد أدوات المنهج الدراسي
+
+قبل أن تعمل على المناهج الدراسية، ستحتاج إلى إعداد بعض الأدوات لمساعدتك على اختبار التغييرات الخاصة بك. يمكنك استخدام أي خيار من الأسفل:
+
+- يمكنك [إعداد FreCodeCamp محليا](how-to-setup-freecodecamp-locally.md). هذه **موصى بها بشدة** للمساهمات العادية/المتكررة. هذا الإعداد يسمح لك بالعمل واختبار التغييرات الخاصة بك.
+- استخدام Gitpod، بيئة ديف مجانية على الإنترنت. النقر على الزر أدناه سيبدأ بيئة dev جاهزة للبرمجة الحرة في المتصفح الخاص بك. ويستغرق الأمر بضع دقائق فقط.
+
+ [](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
+
+- تعديل الملفات على واجهة GitHub، بالنقر على أيقونة قلم الرصاص للملف المقابل. في حين أن هذا هو أسرع طريقة، فإنه **غير مستحسن**، لأنك غير قادر على اختبار التغييرات الخاصة بك على GitHub. إذا خلص المشرفون لدينا إلى أن التغييرات التي أجريتها تحتاج إلى أن تختبر محلياً، سوف تحتاج إلى اتباع الأساليب أعلاه بدلاً من ذلك مرة أخرى.
+
+## قالب التحدي
+
+فيما يلي قالب لماهية التحديات التي تبدو عليها ملفات الدرجات السفلى حاليا. لمشاهدة القالب المبسط سنعتمد [أنظر أدناه](#upcoming-challenge-template).
+
+````md
+---
+المعرف: معرف فريد (أبجدي رقمي, MongoDB_id)
+العنوان: عنوان التحدي
+تحدي: 0
+فيديوورل: 'رابط تفسير الفيديو'
+---
+
+## وصف
+
+
+وصف للتحدي وما هو مطلوب لتمرير
+
+
+## تعليمات
+
+
+تعليمات حول ما يجب القيام به بالضبط.
+
+
+## اختبارات
+
+
+
+```ml
+اختبار:
+ - نص: يجب أن يعيد "foo'
+ اختبار String: 'دالة سلسلة ربما باستخدام تأكيد تشاي'
+````
+
+
+
+## بذرة التحدي
+
+
+
+
+
+```{ext}
+الكود المعروض في المحرر بشكل افتراضي.
+
+وهذا جزء مطلوب لهذا التحدي.
+```
+
+
+
+### قبل الاختبار
+
+
+
+```{ext}
+رمز اختبار اختياري.
+```
+
+
+
+### بعد الاختبار
+
+
+
+```{ext}
+اختبار اختياري لتمزيق التعليمات البرمجية.
+```
+
+
+
+
+
+## حل
+
+
+
+```{ext}
+// الحل مطلوب
+```
+
+
+
+````
+
+> [!NOTE]
+>
+> 1. في الفروع الواردة أعلاه، أمثلة على `{ext}` هي:
+>
+> - `html` - HTML/CSS
+> - `js` - JavaScript
+> - `jsx` - JSX
+>
+> 2. بالنسبة لقسم `الاختبارات` أعلاه، ينبغي أن تكون `text` و`testString` سلاسل YAML صالحة. 'testString' يمكن أن تكون دالة أو تعبير متسلسل يمكن أن تستخدم مزاعم تشاي.
+
+## تحديات الترقيم
+
+كل تحد يحتاج إلى `معرف`. إذا لم تحدد واحداً، سيقوم MongoDB بإنشاء واحد عشوائي جديد عندما يحفظ البيانات؛ ومع ذلك، نحن لا نريد أن نفعل ذلك، لأننا نريد أن تكون معارف التحدي متسقة عبر بيئات مختلفة (الإنتخابات التدريجية)، الإنتاج والكثير من المطورين المختلفين، إلخ.).
+
+لإنشاء واحدة جديدة في قذيفة (بافتراض أن MongoDB يعمل بشكل منفصل):
+
+1. تشغيل الأمر `mongo'.
+2. تشغيل الأمر `objectId()'.
+
+على سبيل المثال:
+
+```bash
+$ mongo
+MongoDB Shell version v3.6.1
+يتصل بـ: mongodb://127.0.0.1:27017
+MongoDB Sersion: 3.4.10
+...
+$ ObjectId()
+ObjectId("5a474d78df58bafeb3535d34")
+````
+
+النتيجة هي معد جديد، على سبيل المثال `5a474d78df58bafeb3535d34` أعلاه.
+
+بمجرد أن يكون لديك بريدك، وضعه في ملف markdown كحقل `معرف` في الأعلى، على سبيل المثال.
+
+```yml
+---
+المعرف: 5a474d78df58bafeb3535d34
+عنوان: عنوان التحدي
+```
+
+## تحديات التسمية
+
+تسمية الأشياء أمر صعب. لقد جعلنا الأمر أسهل من خلال فرض بعض القيود.
+
+يجب أن تكون جميع عناوين التحدي صريحة ويجب أن تتبع هذا النمط:
+
+\[verb\]\[شرط الكائن\]
+
+فيما يلي بعض أسماء التحديات :
+
+- استخدام التدوين على مدار الساعة لتحديد تعبئة العنصر
+- مصفوفات مكثفة مع .خفض
+- استخدم رمز مجموعة للعثور على الشخصية الأولى في سلسلة
+
+## أوصاف/تعليمات التحدي
+
+يجب أن تكون العقوبات واضحة وموجزة مع الحد الأدنى من الجرذون. وفي حالة استخدامها، ينبغي تعريف الجارجون فوراً باللغة الإنكليزية الواضحة.
+
+إبقاء الفقرات قصيرة (نحو 1-4 جملة). ومن المرجح أن يقرأ الناس عدة فقرات قصيرة أكثر مما يقرأ جدارا للنص.
+
+نص التحدي يجب أن يستخدم الشخص الثاني ("أنت") للمساعدة في إعطائه صوت محادثة. وبهذه الطريقة يبدو أن النص والتعليمات تتحدث مباشرة إلى كاميرا تعمل من خلال التحدي. حاول تجنب استخدام الشخص الأول ("I", "we", "let's", and "us").
+
+لا تستخدم الروابط الصادرة. وهي تعرقل التدفق. وينبغي ألا يضطر كاميرون أبداً إلى إخفاء أي شيء خلال هذه التحديات. إذا كانت هناك موارد تعتقد أن كاميرات ستستفيد منها، فتضيفها إلى المقالة المتعلقة بالدليل الخاص بالطعن.
+
+يمكنك إضافة رسوم بيانية إذا كان ذلك ضرورياً.
+
+لا تستخدم الرموز التعبيرية أو الرموز التعبيرية في التحديات. FreCodeCamp لديه مجتمع عالمي، والمعنى الثقافي للرموز التعبيرية أو الانفعالية قد يكون مختلفا حول العالم. أيضًا، الرموز التعبيرية يمكن أن تكون مختلفة في أنظمة مختلفة.
+
+الأسماء المناسبة يجب أن تستخدم الرسملة الصحيحة عندما يكون ذلك ممكنا. وترد أدناه قائمة بالكلمات التي ينبغي أن تظهر في التحديات.
+
+- JavaScript (الأحرف الكبيرة في "J" و "S" و لا اختصار)
+- Node.js
+- تطوير الطرف الأمامي (شكل الصفة مع الشرطة) عندما تعمل على الطرف الأمامي (شكل اسم بدون شرطة). وينطبق نفس الشيء على "الطرف الخلفي" و"المكدس الكامل" والعديد من المصطلحات المركبة الأخرى.
+
+### قاعدة دقيقتين
+
+وينبغي أن يكون كل تحد قابلا للحل في غضون 120 ثانية بواسطة متحدث إنكليزي أصلي أكمل التحديات التي أدت إليه. هذا يشمل الوقت الذي يستغرقه قراءة الاتجاهات/التعليمات التي تفهم رمز البذر، اكتب التعليمات البرمجية الخاصة بهم واحصل على جميع الاختبارات لتمريرها.
+
+إذا استغرق إكمال التحدي أكثر من دقيقتين، فلديك خياران:
+
+- تبسيط التحدي، أو
+- تقسيم التحدي إلى تحديين.
+
+قاعدة دقيقتين تجبرك ، مصمم التحدي ، على جعل توجيهاتك موجزة، رمز البذور الخاص بك واضحة، واختبارك واضح.
+
+نحن نتعقب الوقت الذي تستغرقه الكاميرات لحل التغييرات واستخدام هذه المعلومات لتحديد التحديات التي تحتاج إلى التبسيط أو التقسيم.
+
+### الوحدة
+
+وينبغي لكل تحد أن يدرس مفهوما واحدا بالضبط، وينبغي أن يكون هذا المفهوم واضحا من اسم التحدي.
+
+يمكننا تعزيز المفاهيم التي سبق تغطيتها من خلال التكرار والتغييرات - على سبيل المثال، • إدخال عناصر h1 في تحد واحد، ثم عناصر h3 في وقت لاحق.
+
+وهدفنا هو أن نواجه الآلاف من التحديات لمدة دقيقتين. ويمكن أن تتدفق هذه المفاهيم معا وتكرر تأكيد المفاهيم التي كانت مشمولة سابقا.
+
+### تنسيق نص التحدي
+
+وفيما يلي مبادئ توجيهية محددة بشأن التنسيق للنص الخاص بالتحدي والأمثلة:
+
+- كلمات اللغة الرئيسية تدخل في `` العلامات. على سبيل المثال، أسماء علامات HTML أو أسماء خصائص CSS
+- المثيل الأول لكلمة مفتاحية عند تعريفها، أو الكلمات المفتاحية العامة (أي "الكائن" أو "الثابت") تذهب إلى `` العلامات
+- الإشارات إلى أجزاء التعليمات البرمجية (أي الدالة أو الطريقة أو أسماء المتغير) ينبغي تغليفها في `` العلامات. انظر المثال أدناه:
+- استخدم parseInt
لتحويل المتغير الواقع رقم
إلى عدد صحيح.
+- يجب أن يسبق كتل التعليمات البرمجية متعددة الأسطر **سطر فارغ**. يجب أن يبدأ السطر التالي بثلاث خلفيات يعقبها مباشرة واحدة من [اللغات المدعومة](https://prismjs.com/#supported-languages). لإكمال كتلة التعليمات البرمجية، يجب عليك بدء سطر جديد يحتوي فقط على ثلاث خلفيات و **سطر فارغ آخر**. **ملاحظة:** إذا كنت ستستخدم رمز مثال في YAML ، استخدم `yaml` بدلاً من `yml` للغة إلى يمين الخلف.
+
+انظر المثال أدناه:
+
+````md
+فيما يلي مثال على التعليمة البرمجية:
+
+```{language}
+
+[YOUR CODE HERE]
+
+````
+````
+
+- ينبغي تنسيق معلومات إضافية في شكل ملاحظة `ملاحظة: استعرض نص الملاحظة...
+- إذا كانت هناك حاجة إلى ملاحظات متعددة، ثم قم بقائمة جميع الملاحظات في جمل منفصلة باستخدام تنسيق `الملاحظات: نص الملاحظة الأولى. الحاشية الثانية نص.`.
+- استخدام عبارات اقتباس مزدوجة حيث ينطبق
+
+## اختبار الكتابة
+
+يجب أن تحتوي التحديات على الحد الأدنى من الاختبارات اللازمة للتحقق من أن الكاميرا يفهم مفهوما.
+
+وهدفنا هو الإبلاغ عن النقطة الوحيدة التي يحاول التحدي تعليمها، واختبار أنهم فهموا تلك النقطة.
+
+يمكن أن تستخدم اختبارات التحدي مكتبات تأكيد Node.js و Chai.js. أيضًا، إذا لزم الأمر، يمكن الوصول إلى التعليمات البرمجية التي ينشئها المستخدم في متغير "الكود".
+
+## تنسيق رمز البذور
+
+إليك مبادئ توجيهية محددة لتنسيق رمز البذور التحدي:
+
+- استخدم مسافتين لدخول
+- بيانات جافا سكريبت تنتهي بفاصلة منها
+- استخدم اقتباسات مزدوجة حيثما ينطبق
+- التعليقات التي تم الإدلاء بها يجب أن يكون لها مساحة بين أحرف التعليق والتعليق نفسه
+
+ `// اصلاح هذا السطر`
+
+## تلميحات وحلول
+
+لكل تحد زر 'احصل على تلميح`، حتى يتمكن المستخدم من الوصول إلى أي تلميحات/حلول تم إنشاؤها للتحدي. توجد مواضيع تلميح/حلول المناهج الدراسية في [منتدانا] (https://forum.freecodecamp.org/c/guide) تحت فئة `الدليل'.
+
+إذا وجدت مشكلة مع موضوع تلميح/حلول التحدي القائم، يمكنك تقديم اقتراحات في [فئة المساهمين] (https://forum.freecodecamp.org/c/contributors) في المنتدى. وسيقوم المشرفون والمستعملون ذوو المستوى 3 باستعراض التعليقات ويقررون ما إذا كانوا سيدرجون التغييرات في موضوع التلميح/الحلول المقابل.
+
+### إضافة تلميحات/مواضيع جديدة للتحدي
+
+اتخاذ الخطوات التالية عند إضافة تلميحات/حلول جديدة للتحدي.
+
+1. ابدأ باتباع نفس الخطوات لإنشاء موضوع جديد ولكن راجع التالي لإنشاء العنوان.
+2. ينبغي أن يبدأ عنوان الموضوع بـ 'دليل تحدي FreCodeCamp Challenge: ' متوافق مع العنوان الفعلي لتحدي المنهج الدراسي. فعلى سبيل المثال، إذا كان التحدي يسمى "`قرود شونكي`"، فإن عنوان الموضوع سيكون "`دليل تحدي freeCodeCamp Guide: Chunky Monkey`".
+3. يجب أن يكون "الكامبربوت" مالك هذه المواضيع/المشاركات، لذا ستحتاج إلى طلب مشرف لتغيير ملكية الوظيفة الرئيسية إلى 'الكاميربوت`.
+4. بمجرد إنشاء الموضوع الجديد، يتم إنشاء معرف موضوع المنتدى. يقع في نهاية عنوان URL لموضوع المنتدى. يجب إضافة هذا المعرف إلى الموضوع الأمامي لملف تحدي المنهج الدراسي من خلال عملية طلب السحب العادية لزر "الحصول على تلميح" لربط الموضوع.
+
+### مبادئ توجيهية لمحتوى التلميحات ومواضيع الحلول
+
+عند اقتراح حل لموضوع الدليل المتصل بتحدي المنهج، يجب إضافة الرمز الكامل. وهذا يشمل جميع شفرة البذور الأصلية بالإضافة إلى أي تغييرات لازمة لتجاوز جميع اختبارات التحدي. يجب استخدام القالب التالي عند إنشاء تلميحات/مواضيع حلول:
+
+``md
+# اسم التحدي هنا
+
+---
+
+## شرح المشكلة
+
+يلخص ما يجب القيام به دون مجرد تكرار وصف التحدي و/أو التعليمات. هذا قسم اختياري
+
+#### الروابط ذات الصلة
+
+- [Link Text](link_url_goes_here)
+- [Link Text](link_url_goes_here)
+
+---
+
+## # # Hints
+
+#### Hint 1
+
+Hint هنا
+
+#### 2
+
+تلميح هنا
+
+---
+
+## # الحلول
+
+الحل 1 (اضغط على عرض/Hide)
+
+```js
+function myFunc() {
+ console. og('مرحبا بالعالم!');
+}
+````
+
+#### شرح التعليمات البرمجية
+
+- تفسير الرمز يذهب هنا
+- تفسير الرمز يذهب هنا
+
+#### الروابط ذات الصلة
+
+- [نص الرابط](link_url_goes_here)
+- [نص الرابط](link_url_goes_here)
+
+
+````
+
+## اختبار التحديات
+
+أمامك [إنشاء طلب سحب] (كيف يمكن فتح - سحب الطلب). (د) بالنسبة للتغييرات الخاصة بك، تحتاج إلى التحقق من أن التغييرات التي قمت بها لا تسبب مشاكل مع التحدي عن غير قصد.
+
+1. لاختبار جميع التحديات تشغيل الأمر أدناه من الدليل الجذر
+
+````
+npm تشغيل الاختبار:منهج دراسي
+```
+
+2. يمكنك أيضا اختبار كتلة أو كتلة خارقة من التحديات باستخدام هذه الأوامر
+
+```
+npm قم بتشغيل الاختبار:منهج --block='HTML الأساسي و HTML5'
+```
+
+```
+npm قم بتشغيل الاختبار:curriculum --superblock=responve-web-design
+```
+
+يمكنك أيضًا اختبار تحدي واحد فردًا من خلال تنفيذ الخطوات التالية:
+
+1. التبديل إلى دليل 'المنهاج الدراسي`:
+
+ ```
+ منهج cd
+ ```
+
+2. قم بتشغيل ما يلي لكل ملف من ملفات التحدي التي قمت بتغيير ما يلي:
+
+ ```
+ npm اختبار -- -g 'العنوان الإنجليزي الكامل للتحدي'
+ ```
+
+بمجرد التحقق من أن كل تحدي كنت قد عملت على اجتياز الاختبارات، [يرجى إنشاء طلب سحب] (https://github.com/freeCodeCamp/freeCodeCamp/blob/Master/docs/how-to-open-a-pull-request.md).
+
+> [!TIP]
+> يمكنك تعيين متغير البيئة `LOCALE` في `.env` إلى لغة التحدي (التحديات) التي تحتاج إلى اختبار.
+>
+> القيم المقبولة حاليا هي "الإنكليزية" و "chinese"، مع تعيين "english" بشكل افتراضي.
+
+## قالب التحدي القادم
+
+قالب التحدي في عملية التحديث إلى بنية أنظف وأقل تداخلا. لم يتم الانتهاء من ذلك تماما، ولكن ينبغي أن يكون ما يلي قريبا من الهيكل النهائي:
+
+``mdx
+
+--
+id: المعرف الفريد (أبجدي رقمي، MongoDB_id)
+عنوان: 'عنوان التحدي'
+نوع التحدي: عدد صحيح، معرف في 'العميل/Us/ChallengeTypes. s`
+فيديوورل: 'عنوان URL لشرح الفيديو'
+forumTopicId: 12345
+---
+
+استيراد سكريبت من './script. dx';
+
+## --step-description--
+
+نص الوصف، في markdown
+
+``html
+
+
+
+ مثال رمز
+
+```
+
+## --تلميحات الخطوات--
+
+![test-id-1]
+
+سيكون هناك عدد اعتباطي من ثلاث مرات للمعرفات والتعليمات (في markdown) والكتل البرمجية.
+
+```js
+كود الاختبار الأول
+```
+
+![test-id-2]
+
+المزيد من الإرشادات في بناء الجملة markdown
+
+```js
+المزيد من التعليمات البرمجية
+```
+
+## --بذرة خطوة--
+
+### --رمز المستخدم مسبقاً--
+
+```lang
+تم تقييم الرمز قبل المستخدم
+```
+
+### --رمز المستخدم --
+
+```lang
+تم تقييم الرمز بعد المستخدم، وقبل الاختبارات مباشرة
+```
+
+### --محتوى البذورة--
+
+![index-html]
+
+```html
+بعض html
+```
+
+```css
+بعض الشارات
+```
+
+```js
+بعض Js
+```
+
+![index-js]
+
+