diff --git a/docs/i18n/chinese-traditional/FAQ.md b/docs/i18n/chinese-traditional/FAQ.md index 9420289309d..6b230e871cc 100644 --- a/docs/i18n/chinese-traditional/FAQ.md +++ b/docs/i18n/chinese-traditional/FAQ.md @@ -1,6 +1,6 @@ ### 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 comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips. +Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open-source contribution tips. ### What do I need to know to contribute to the codebase? diff --git a/docs/i18n/chinese-traditional/devops.md b/docs/i18n/chinese-traditional/devops.md index 39d72874195..e25458c86ab 100644 --- a/docs/i18n/chinese-traditional/devops.md +++ b/docs/i18n/chinese-traditional/devops.md @@ -2,11 +2,11 @@ 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. +Let us know if you have feedback or queries and we will be happy to clarify. -# Flight Manual - Code deployments +## Flight Manual - Code Deployments -This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**. +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: @@ -14,7 +14,7 @@ This involves three steps to be followed in sequence: 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. +### Building the codebase - Mapping Git Branches to Deployments Typically, [`main`](https://github.com/freeCodeCamp/freeCodeCamp/tree/main) (the default development branch) is merged into the [`prod-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/prod-staging) branch once a day and is released into an isolated infrastructure. @@ -26,33 +26,33 @@ Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeC This is the final release that moves changes to our production platforms on freeCodeCamp.org. -#### Testing changes - Integration and User Acceptance Testing. +### 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 [GitHub Actions CI](https://github.com/freeCodeCamp/freeCodeCamp/actions) 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. +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. +> [!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. +### 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. +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). +The statuses of builds and releases are [available here](#build-test-and-deployment-status). -## Trigger a build, test and deploy +## Trigger a Build, Test, and Deploy -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). +Currently, only members of 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. +> [!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. +### Pushing changes to Staging Applications 1. Configure your remotes correctly. @@ -102,15 +102,15 @@ Currently, only members on the developer team can push to the production branche 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. + > [!NOTE] You will not be able to force push and if you have re-written the history in any way, 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 `prod-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. +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. -### Pushing changes to Production Applications. +### 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. @@ -134,7 +134,7 @@ The process is mostly the same as the staging platforms, with a few extra checks 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. + > [!NOTE] You will not be able to force push and if you have re-written the history in any way, these commands will error out. > > If they do, you may have done something incorrectly and you should just start over. @@ -142,7 +142,7 @@ The above steps will automatically trigger a run on the build pipeline for the ` **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. +Once 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. @@ -165,17 +165,17 @@ Here is the current test, build and deployment status of the codebase. | [`prod-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/prod-staging) | [![Node.js CI](https://github.com/freeCodeCamp/freeCodeCamp/workflows/Node.js%20CI/badge.svg?branch=prod-current)](https://github.com/freeCodeCamp/freeCodeCamp/actions?query=workflow%3A%22Node.js+CI%22+branch%3Aprod-current) | [![Cypress E2E 測試](https://img.shields.io/endpoint?url=https://dashboard.cypress.io/badge/simple/ke77ns/prod-current&style=flat&logo=cypress)](https://dashboard.cypress.io/projects/ke77ns/analytics/runs-over-time) | [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_dashboards/dashboard/d59f36b9-434a-482d-8dbd-d006b71713d4) | | `prod-next` (experimental, upcoming) | - | - | - | -## Early access and beta testing +## 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. +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 +### Identifying the Upcoming Version of the Platforms -Currently a public beta testing version is available at: +Currently, a public beta testing version is available at: | Application | Language | URL | |:----------- |:-------- |:---------------------------------------- | @@ -189,27 +189,27 @@ 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. > -> The above list not exhaustive of all the applications that we provision. Also not all language variants are deployed in staging to conserve resources. +> The above list is not exhaustive of all the applications that we provision. Also, not all language variants are deployed in staging to conserve resources. -### Identifying the current version of the platforms +### 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 `prod-staging` branch to `prod-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://discord.gg/PRyKn3Vbay) for a confirmation. +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://discord.gg/PRyKn3Vbay) 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. +- #### 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. + **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. +- #### 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. + 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 @@ -225,7 +225,7 @@ Please open fresh issues for discussions and reporting bugs. 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. -# Flight Manual - Server Maintenance +## Flight Manual - Server Maintenance > [!WARNING] > @@ -238,7 +238,7 @@ Here are some handy commands that you can use to work on the Virtual Machines (V ## 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. +> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you have been granted access to the cloud portals as well. ### Azure @@ -286,19 +286,19 @@ doctl auth init doctl compute droplet list --format "ID,Name,PublicIPv4" ``` -## Spin new Resources +## Spin New Resources We are working on creating our IaC setup, and while that is in works you can use the Azure portal or the Azure CLI to spin new virtual machines and other resources. > [!TIP] No matter your choice of spinning resources, we have a few [handy cloud-init config files](https://github.com/freeCodeCamp/infra/tree/main/cloud-init) to help you do some of the basic provisioning like installing docker or adding SSH keys, etc. -## Keep VMs updated +## 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. +You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with the 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. +> - Make sure that the VM has been provisioned completely and that there are 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 @@ -370,7 +370,7 @@ Provisioning VMs with the Code Add/update the source/origin application IP addresses. -3. Setup networking and firewalls. +3. Set up networking and firewalls. Configure Azure firewalls and `ufw` as needed for ingress origin addresses. @@ -435,7 +435,7 @@ Provisioning VMs with the Code npm install -g pnpm ``` -3. Clone freeCodeCamp, setup env and keys. +3. Clone freeCodeCamp, set up env, and keys. ```console git clone https://github.com/freeCodeCamp/freeCodeCamp.git @@ -482,7 +482,7 @@ pnpm 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 environment variables. +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 latter is essential when changing dependencies or adding environment variables. > [!ATTENTION] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs. @@ -518,7 +518,7 @@ pnpm start:server && pnpm pm2 logs pnpm reload:server && pnpm 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. +> [!NOTE] We are handling rolling updates to code and logic via pipelines. You should not need to run these commands. These are here for documentation. #### 3. Updating Node @@ -669,7 +669,7 @@ Provisioning VMs with the Code Add/update the source/origin application IP addresses. -3. Setup networking and firewalls. +3. Set up networking and firewalls. Configure Azure firewalls and `ufw` as needed for ingress origin addresses. @@ -792,7 +792,7 @@ Config changes to our NGINX instances are maintained on GitHub, these should be ## Work on Contributor Tools -### Deploy updates +### Deploy Updates ssh into the VM (hosted on Digital Ocean). @@ -804,7 +804,7 @@ pnpm run build pm2 restart contribute-app ``` -## Updating Node.js versions on VMs +## Updating Node.js Versions on VMs List currently installed node & npm versions @@ -828,7 +828,7 @@ Verify installed packages npm ls -g --depth=0 ``` -Alias the `default` Node.js version to the current LTS (pinned to latest major version) +Alias the `default` Node.js version to the current LTS (pinned to the latest major version) ```console nvm alias default 16 @@ -840,7 +840,7 @@ nvm alias default 16 nvm uninstall ``` -> [!ATTENTION] For client applications, the shell script can't be resurrected between Node.js versions with `pm2 resurrect`. Deploy processes from scratch instead. This should become nicer when we move to a docker based setup. +> [!ATTENTION] For client applications, the shell script can't be resurrected between Node.js versions with `pm2 resurrect`. Deploy processes from scratch instead. This should become nicer when we move to a docker-based setup. > > If using PM2 for processes you would also need to bring up the applications and save the process list for automatic recovery on restarts. @@ -876,17 +876,17 @@ pm2 logs ## Installing and Updating Azure Pipeline Agents -See: https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-linux?view=azure-devops and follow the instructions to stop, remove and reinstall agents. Broadly you can follow the steps listed here. +See: https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-linux?view=azure-devops and follow the instructions to stop, remove, and reinstall agents. Broadly you can follow the steps listed here. You would need a PAT, that you can grab from here: https://dev.azure.com/freeCodeCamp-org/_usersSettings/tokens -### Installing agents on Deployment targets +### Installing Agents on Deployment targets Navigate to [Azure Devops](https://dev.azure.com/freeCodeCamp-org) and register the agent from scratch in the requisite [deployment groups](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_machinegroup). > [!NOTE] 你應該在主目錄運行腳本,並確保沒有其他 `azagent` 目錄存在。 -### Updating agents +### Updating Agents Currently updating agents requires them to be removed and reconfigured. This is required for them to correctly pick up `PATH` values and other system environment variables. 例如,我們需要在部署目標虛擬機上更新 Node.js 時這樣做。 @@ -924,7 +924,7 @@ Currently updating agents requires them to be removed and reconfigured. This is Once You have completed the steps above, you can repeat the same steps as installing the agent. -# Flight Manual - Email Blast +## Flight Manual - Email Blast We use [a CLI tool](https://github.com/freecodecamp/sendgrid-email-blast) to send out the weekly newsletter. To spin this up and begin the process: @@ -955,7 +955,7 @@ We use [a CLI tool](https://github.com/freecodecamp/sendgrid-email-blast) to sen 7. When the email blast is complete, verify that no emails have failed before destroying the droplets. -# Flight Manual - Adding news instances for new languages +## Flight Manual - Adding news instances for new languages ### Theme Changes diff --git a/docs/i18n/chinese-traditional/how-to-add-cypress-tests.md b/docs/i18n/chinese-traditional/how-to-add-cypress-tests.md index 51e50f3e29f..8e256bc9272 100644 --- a/docs/i18n/chinese-traditional/how-to-add-cypress-tests.md +++ b/docs/i18n/chinese-traditional/how-to-add-cypress-tests.md @@ -4,23 +4,23 @@ When making changes to JavaScript, CSS, or HTML which could change the functiona To learn how to write Cypress tests, or 'specs', please see Cypress' official [documentation](https://docs.cypress.io/guides/getting-started/writing-your-first-test.html). -## Where to add a test +## Where to Add a Test - Cypress tests are in the `./cypress` directory. - Cypress tests for a curriculum module are in the corresponding curriculum directory, i.e. `cypress/integration/learn/responsive-web-design/basic-css/index.js`. -## How to run tests +## How to Run Tests > [!NOTE] If using GitPod, please see [Cypress-GitPod Setup](how-to-add-cypress-tests.md#cypress-gitpod-setup) -### 1. Ensure that MongoDB and client applications are running +### 1. Ensure that MongoDB and Client Applications are Running - [Start MongoDB and seed the database](how-to-setup-freecodecamp-locally.md#step-3-start-mongodb-and-seed-the-database) - [Start the freeCodeCamp client application and API server](how-to-setup-freecodecamp-locally.md#step-4-start-the-freecodecamp-client-application-and-api-server) -### 2. Run the cypress tests +### 2. Run the Cypress Tests To run tests against production builds, replace `dev` with `prd` below. @@ -39,7 +39,7 @@ To run tests against production builds, replace `dev` with `prd` below. For example: ```console - pnpm run cypress -- run --spec=cypress/e2e/default/landing.js + pnpm run cypress -- run --spec=cypress/e2e/default/landing.ts ``` - To create a development build, start the development server, and run all existing cypress end-to-end tests: diff --git a/docs/i18n/chinese-traditional/how-to-catch-outgoing-emails-locally.md b/docs/i18n/chinese-traditional/how-to-catch-outgoing-emails-locally.md index d5d4e202aa5..094ddf77920 100644 --- a/docs/i18n/chinese-traditional/how-to-catch-outgoing-emails-locally.md +++ b/docs/i18n/chinese-traditional/how-to-catch-outgoing-emails-locally.md @@ -7,11 +7,11 @@ ## Introduction -Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. MailHog is an alternative to using an email service provider to send actual email messages. It is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance. +Some email workflows, like updating a user's email, require the back-end api-server to send outgoing emails. MailHog is an alternative to using an email service provider to send actual email messages. It 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 or used via Docker +MailHog can be installed on macOS, Windows, and Linux or used via Docker
Installing MailHog with Docker diff --git a/docs/i18n/chinese-traditional/how-to-enable-new-languages.md b/docs/i18n/chinese-traditional/how-to-enable-new-languages.md index 3448b5644fd..b4490d4a9b9 100644 --- a/docs/i18n/chinese-traditional/how-to-enable-new-languages.md +++ b/docs/i18n/chinese-traditional/how-to-enable-new-languages.md @@ -177,7 +177,7 @@ The order of the superblocks in this object is how they appear on the "Landing" The `CurriculumMaps.Landing` array should contain exactly one superblock for all our current certifications, and the `CurriculumMaps.Learn` object should have all existing superblocks in it. Translated superblocks go in `TranslationStates.Audited` and non-translated superblocks go in `TranslationStates.NotAudited`. Each of those two objects has four different states a superblock can be in. - `SuperBlockStates.Current`: Means that the superblock is current, `(New) Responsive Web Design` for example. -- `SuperBlockStates.New`: These only show up when `SHOW_NEW_CURRICULUM` is set to `true` in your `.env` file. It is for displaying new superblocks on a specific build. For example, when we released the new RWD, we only showed in on English to start. +- `SuperBlockStates.New`: These only show up when `SHOW_NEW_CURRICULUM` is set to `true` in your `.env` file. It is for displaying new superblocks on a specific build. For example, when we released the new RWD, we only showed it on English to start. - `SuperBlockStates.Upcoming`: These only show up when `SHOW_UPCOMING_CHANGES` is set to `true` in your `.env` file. It is to show superblocks locally while they are in development. Or, if you just need to hide a superblock from the map for some other reason. - `SuperBlockStates.Legacy`: A superblock is moved here when a newer version of that superblock has been fully translated and replaced it. @@ -218,7 +218,7 @@ const algoliaIndices = { ## Enabling Localized Videos -For the video challenges, you need to change a few things. First add the new locale to the GraphQL query in the `client/src/templates/Challenges/video/Show.tsx` file. For example, adding Dothraki to the query: +For the video challenges, you need to change a few things. First, add the new locale to the GraphQL query in the `client/src/templates/Challenges/video/Show.tsx` file. For example, adding Dothraki to the query: ```tsx query VideoChallenge($slug: String!) { @@ -256,7 +256,7 @@ export interface VideoLocaleIds { } ``` -And finally update the challenge schema in `curriculum/schema/challengeSchema.js`. +And finally, update the challenge schema in `curriculum/schema/challengeSchema.js`. ```js videoLocaleIds: Joi.when('challengeType', { diff --git a/docs/i18n/chinese-traditional/how-to-help-with-video-challenges.md b/docs/i18n/chinese-traditional/how-to-help-with-video-challenges.md index 0d0e44c612a..af0695932a9 100644 --- a/docs/i18n/chinese-traditional/how-to-help-with-video-challenges.md +++ b/docs/i18n/chinese-traditional/how-to-help-with-video-challenges.md @@ -1,4 +1,4 @@ -# How to help with video challenges +# How to Help with Video Challenges Video challenges are a new type of challenge in the freeCodeCamp curriculum. @@ -54,9 +54,9 @@ More answers The number for the correct answer goes here. ```` -## Creating questions for video challenges +## Creating Questions for Video Challenges -### Access the video challenge markdown files +### Access the Video Challenge Markdown Files You can find the markdown files for video challenges at the following locations in the curriculum: @@ -87,7 +87,7 @@ 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 +### Add the Question to the Markdown File You can add the question locally or using 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. @@ -198,6 +198,6 @@ print(height/3) 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/main/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody) -## Open a pull request +## 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/chinese-traditional/how-to-open-a-pull-request.md b/docs/i18n/chinese-traditional/how-to-open-a-pull-request.md index 0e9ff9c96d3..3d1033beef7 100644 --- a/docs/i18n/chinese-traditional/how-to-open-a-pull-request.md +++ b/docs/i18n/chinese-traditional/how-to-open-a-pull-request.md @@ -17,7 +17,7 @@ Some examples of this are: > [!NOTE] Your PR should be targeting changes to the English curriculum only. Read [this guide](index.md#translations) instead for contributing to translations. -## Prepare a good PR title +## 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: @@ -93,7 +93,7 @@ Some examples of good PR titles would be: - If your PR affects the behaviour of a page it should be accompanied by corresponding [Cypress integration tests](how-to-add-cypress-tests.md). -## Feedback on pull requests +## Feedback on Pull Requests > :tada: Congratulations on making a PR and thanks a lot for taking the time to contribute. @@ -103,13 +103,13 @@ And as always, feel free to ask questions on the ['Contributors' category on our > [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](how-to-setup-freecodecamp-locally.md#making-changes-locally) guidelines to avoid having to delete your fork. -## Conflicts on a pull request +## 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 +### For Usual Bug Fixes and Features When you are working on regular bugs and features on our development branch `main`, you are able to do a simple rebase: @@ -138,7 +138,7 @@ When you are working on regular bugs and features on our development branch `mai git push --force origin ``` -### For upcoming curriculum and features +### For Upcoming Curriculum and Features When you are working on features for our upcoming curriculum `next-*` branches, you have to do a cherry pick: diff --git a/docs/i18n/chinese-traditional/how-to-proofread-files.md b/docs/i18n/chinese-traditional/how-to-proofread-files.md index c788510db0b..151cdf6a205 100644 --- a/docs/i18n/chinese-traditional/how-to-proofread-files.md +++ b/docs/i18n/chinese-traditional/how-to-proofread-files.md @@ -39,7 +39,7 @@ No additional actions are required once a file has been proofread. > [!NOTE] Approving a string in the proofreading view will mark it as complete and it will be downloaded in our next pull from Crowdin to GitHub. -## Becoming a proofreader +## Becoming a Proofreader If you have any questions, or are interested in becoming a proofreader, feel free to reach out to us in our [contributors chat room](https://discord.gg/PRyKn3Vbay). We will typically grant you proofreading access if you have been contributing to freeCodeCamp for a while. @@ -47,7 +47,7 @@ Our staff team and community moderators teams are always looking for kind volunt > [!NOTE] Crowdin 會允許你校對你自己的譯文。 一般來說,最好是讓另一位校對者審覈你的譯文,以確保最終內容的準確性。 -## Creating a channel on Chat for a world language +## Creating a Channel on Chat for a World Language For the most part we encourage you to use the [contributors chat](https://discord.gg/PRyKn3Vbay) room for all correspondence. However if the team of volunteer translators grows for a certain language, we can consider creating additional break-out channel for the language. diff --git a/docs/i18n/chinese-traditional/how-to-setup-freecodecamp-locally.md b/docs/i18n/chinese-traditional/how-to-setup-freecodecamp-locally.md index d062d5fdd5e..62c292b0162 100644 --- a/docs/i18n/chinese-traditional/how-to-setup-freecodecamp-locally.md +++ b/docs/i18n/chinese-traditional/how-to-setup-freecodecamp-locally.md @@ -1,6 +1,6 @@ Follow these guidelines for setting up a development environment for freeCodeCamp. This is highly recommended if you want to contribute regularly. -## Choose between Gitpod or your own machine (local setup) +## Choose between Gitpod or your Own Machine (local setup) If you are looking to make a one-off contribution, you should use Gitpod to make changes. The Gitpod setup launches a ready-to-code environment in a few minutes in your web browser. For contributing long-term, we recommend you setup freeCodeCamp on your local machine. @@ -17,7 +17,7 @@ Here are some pros and cons which should help you decide which option is best fo > [!ATTENTION] **Note:** If you are using Windows 10 or 11, you will need to use WSL2. You can follow [this guide](how-to-setup-wsl.md) to set up WSL2. You can't use Command Prompt, Git Bash or PowerShell to run freeCodeCamp natively within windows. -### How to prepare a Gitpod workspace +### How to Prepare a Gitpod Workspace We have automated the process of installing all the dependencies & tools you will need. With GitPod you get a free ready-to-code environment in a few minutes, and is useful if you do not have access to computer or want to make one-time changes. @@ -38,7 +38,7 @@ There are various ways to launch an GitPod workspace: That's it, you can now skip to the 'syncing up from parent' section after you have launched a GitPod workspace. Most parts of this guide applies to GitPod workspaces, but be mindful of [how the URLs & Ports work within a GitPod](https://www.gitpod.io/docs/configure/workspaces/ports) workspace. -### How to prepare your local machine +### How to Prepare your Local Machine Here is a minimum system requirement for running freeCodeCamp locally: @@ -87,7 +87,7 @@ Once you have the prerequisites installed, you need to prepare your development > [!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 +## 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. @@ -114,7 +114,7 @@ This is essential, as it allows you to work on your own copy of freeCodeCamp on How to fork freeCodeCamp on GitHub
-## Clone your fork from GitHub +## 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`. (`YOUR_USER_NAME` would be replaced with your GitHub user name.) @@ -138,7 +138,7 @@ 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 +## 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. @@ -173,7 +173,7 @@ You need a reference from your local clone to the `upstream` repository in addit upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push) ``` -## Running freeCodeCamp locally +## 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: @@ -185,9 +185,9 @@ If you do run into issues, first perform a web search for your issue and see if And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our chat server](https://discord.gg/PRyKn3Vbay). -### Configuring dependencies +### Configuring Dependencies -#### Step 1: Set up the environment variable file +#### 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. @@ -216,7 +216,7 @@ The keys in the `.env` file are _not_ required to be changed to run the app loca > [!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 +#### Step 2: Install Dependencies This step will install the dependencies required for the application to run: @@ -224,7 +224,7 @@ This step will install the dependencies required for the application to run: pnpm install ``` -#### Step 3: Start MongoDB and seed the database +#### Step 3: Start MongoDB and Seed the Database Before you can run the application locally, you will need to start the MongoDB service. @@ -262,7 +262,7 @@ Next, let's seed the database. In this step, we run the below command that fills pnpm run seed ``` -#### Step 4: Start the freeCodeCamp client application and API server +#### Step 4: Start the freeCodeCamp Client Application and API Server You can now start up the API server and the client applications. @@ -282,7 +282,7 @@ While you are logged in, if you visit you shoul If you have issues while installing it, check out the [troubleshooting section](troubleshooting-development-issues.md) -## Quick commands reference +## Quick Commands Reference A quick reference to the commands that you will need when working locally. diff --git a/docs/i18n/chinese-traditional/how-to-setup-freecodecamp-mobile-app-locally.md b/docs/i18n/chinese-traditional/how-to-setup-freecodecamp-mobile-app-locally.md index 9c83fa67caf..9deae099e21 100644 --- a/docs/i18n/chinese-traditional/how-to-setup-freecodecamp-mobile-app-locally.md +++ b/docs/i18n/chinese-traditional/how-to-setup-freecodecamp-mobile-app-locally.md @@ -1,12 +1,12 @@ Follow this guide for setting up the freeCodeCamp mobile app locally on your system. This is highly recommended if you want to contribute regularly. -Some of the contribution workflows – like fixing bugs in the codebase – need you to run freeCodeCamp app locally. +Some of the contribution workflows – like fixing bugs in the codebase – need you to run the freeCodeCamp app locally. -### How to prepare your local machine +### How to Prepare your Local Machine Start by installing the prerequisite software for your operating system. -#### Prerequisites: +#### Prerequisites | Prerequisite | Version | Notes | | --------------------------------- | ------- | ---------------------------------------- | @@ -30,9 +30,9 @@ Once you have the prerequisites installed, you need to prepare your development 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. Setup [Android Studio](https://developer.android.com/studio) and [Android Emulators](https://developer.android.com/studio/run/managing-avds) with the latest released Android version. We recommend using the Pixel 3a XL and Nexus One(for emulating smaller screens). +2. Set up [Android Studio](https://developer.android.com/studio) and [Android Emulators](https://developer.android.com/studio/run/managing-avds) with the latest released Android version. We recommend using the Pixel 3a XL and Nexus One(for emulating smaller screens). -3. (Optional for MacOS) Setup Xcode and iOS Simulator with the latest released iOS version. +3. (Optional for MacOS) Set up Xcode and iOS Simulator with the latest released iOS version. 4. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. @@ -40,7 +40,7 @@ Once you have the prerequisites installed, you need to prepare your development We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or Android Studio. We also recommend installing the official [extensions](https://docs.flutter.dev/get-started/editor?tab=vscode). -## Fork the repository on GitHub +## Fork the Repository on GitHub [Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of the repository (a.k.a _repo_) on GitHub. @@ -58,9 +58,9 @@ This is essential, as it allows you to work on your own copy of freeCodeCamp mob 3. After the repository has been forked, you will be taken to your copy of the repository at `https://github.com/YOUR_USER_NAME/mobile` (`YOUR_USER_NAME` would be replaced with your GitHub user name.) -## Clone your fork from GitHub +## 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/mobile`. (`YOUR_USER_NAME` would be replaced with your GitHub user name.) +[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 which should be available at `https://github.com/YOUR_USER_NAME/mobile`. (`YOUR_USER_NAME` would be replaced with your GitHub user name.) Run these commands on your local machine: @@ -78,11 +78,11 @@ This will download the entire freeCodeCamp mobile repository to your projects di Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit. -## Set up syncing from parent +## 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. +[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred to as the `upstream` repository. Your fork is 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. @@ -113,7 +113,7 @@ You need a reference from your local clone to the `upstream` repository in addit upstream https://github.com/freeCodeCamp/mobile.git (push) ``` -## Running freeCodeCamp mobile app locally +## Running freeCodeCamp Mobile App Locally Now that you have a local copy of the mobile app, you can follow these instructions to run it locally. @@ -123,11 +123,11 @@ And as always, feel free to ask questions on the ['Contributors' category on our > [!NOTE] The `mobile` directory contains two folders ie. `mobile-api` and `mobile-app`. `mobile-api` contains the API code used for serving the podcasts. `mobile-app` contains the Flutter app which is where you should be when you follow the below steps. -### Configuring dependencies +### Configuring Dependencies -#### Step 1: Set up the environment variable file +#### 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. Remember to change the directory to `mobile-app` before running the following commands. +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` which is accessed dynamically during the installation step. Remember to change the directory to `mobile-app` before running the following commands. ```console # Create a copy of the "sample.env" and name it ".env". @@ -172,9 +172,9 @@ flutter run > [!TIP] If you're using VSCode or Android Studio then you can easily start the app without having to execute any terminal commands. More information [here](https://docs.flutter.dev/get-started/test-drive). -## Making changes locally +## Making Changes Locally -You can now make changes to files and commit your changes to your local clone of your fork. +You can now make changes to files and commit your changes to the local clone of your fork. Follow these steps: @@ -225,7 +225,7 @@ Follow these steps: git push origin main --force ``` - You can validate your current main matches the upstream/main by performing a diff: + You can validate that your current main matches the upstream/main by performing a diff: ```console git diff upstream/main @@ -243,7 +243,7 @@ Follow these steps: 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. + 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: @@ -392,11 +392,11 @@ If you face issues with the UI, or builds errors a cleanup can be useful: flutter clean ``` -### Issues installing dependencies +### 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. -Be patient as the first time setup can take a while depending on your network bandwidth. +Be patient as the first-time setup can take a while depending on your network bandwidth. ## Getting Help diff --git a/docs/i18n/chinese-traditional/how-to-setup-wsl.md b/docs/i18n/chinese-traditional/how-to-setup-wsl.md index 80d81ea9769..3c7ea5fc83c 100644 --- a/docs/i18n/chinese-traditional/how-to-setup-wsl.md +++ b/docs/i18n/chinese-traditional/how-to-setup-wsl.md @@ -117,17 +117,17 @@ Node.js comes bundled with `npm`, which you can use to install `pnpm`: npm install -g pnpm ``` -## Set up freeCodeCamp locally +## Set up freeCodeCamp Locally -Now that you have installed the pre-requisites, follow [our local setup guide](how-to-setup-freecodecamp-locally.md) to clone, install and setup freeCodeCamp locally on your machine. +Now that you have installed the pre-requisites, follow [our local setup guide](how-to-setup-freecodecamp-locally.md) to clone, install and set up 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. +> Please note, at this time the setup 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://hn.mrugesh.dev/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org) +- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code, and Docker](https://hn.mrugesh.dev/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/chinese-traditional/how-to-translate-files.md b/docs/i18n/chinese-traditional/how-to-translate-files.md index 4e779ae575b..3634d21b53d 100644 --- a/docs/i18n/chinese-traditional/how-to-translate-files.md +++ b/docs/i18n/chinese-traditional/how-to-translate-files.md @@ -1,6 +1,6 @@ # 如何翻譯 freeCodeCamp 的資源 -## 貢獻前的準備 +## Prepare yourself for Contributions > The freeCodeCamp Localization Roadmap – There Are No Speed Limits @@ -44,7 +44,7 @@ We just ask that you understand the following: ## Overview of Crowdin -It's our dream to provide you with the resources to learn, no matter the world language you speak. To help us with this massive effort, we have integrated our open-source code-base & curriculum with [Crowdin](https://crowdin.com/) - A tool to help us localize our code-base. +It's our dream to provide you with the resources to learn, no matter the world language you speak. To help us with this massive effort, we have integrated our open-source codebase & curriculum with [Crowdin](https://crowdin.com/) - A tool to help us localize our code-base. > [!NOTE] We use a different tool and workflow for translating [news articles](https://www.freecodecamp.org/news). If you are interested in translating articles, read [this announcement](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/) and reach out to your Language Lead. @@ -60,7 +60,7 @@ The translation workflow is split into two main activities: > [!WARNING] We are no longer using GitHub to translate files directly, if you are a returning contributor head to our [translation platform](https://translate.freecodecamp.org/) instead. -## Getting started +## Getting Started First, make sure you come say "Hi" in our [Discord](https://discord.gg/PRyKn3Vbay). 我們會在聊天室定期更新翻譯的資源和回答很多問題。 @@ -145,7 +145,7 @@ Translating our contributing documentation is a similar flow to translating our > [!NOTE] Our contributing documentation is powered by `docsify`, and we have special parsing for message boxes like this one. If you see strings that start with `[!NOTE]`, `[!WARNING]`, or `[!TIP]`, these words should NOT be translated. -### How to translate documentation with internal links +### How to Translate Documentation with Internal Links When you work on translating contributing documentation, watch out for internal links targeting a different section of the documentation. diff --git a/docs/i18n/chinese-traditional/how-to-work-on-coding-challenges.md b/docs/i18n/chinese-traditional/how-to-work-on-coding-challenges.md index 1011a6084d2..c0dd14498b1 100644 --- a/docs/i18n/chinese-traditional/how-to-work-on-coding-challenges.md +++ b/docs/i18n/chinese-traditional/how-to-work-on-coding-challenges.md @@ -190,7 +190,7 @@ $ ObjectId() ObjectId("5a474d78df58bafeb3535d34") ```` -The result is a new id, for example `5a474d78df58bafeb3535d34` above. +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. @@ -243,7 +243,7 @@ If it takes longer than two minutes to complete the challenge, you have two opti - 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. +The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straightforward. We track how long it takes for campers to solve challenges and use this information to identify challenges that need to be simplified or split. @@ -267,7 +267,7 @@ Use `parseInt` to convert the variable `realNumber` into an integer. ``` - References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `` \` `` backticks. -- 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 new line which only has three backticks and **another empty line**. See example below: +- 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 new line that only has three backticks and **another empty line**. See example below: - Whitespace matters in Markdown, so we recommend that you make it visible in your editor. **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. @@ -284,7 +284,7 @@ The following is an example of code: - Additional information in the form of a note should be surrounded by blank lines, and 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 single-quotes where applicable +- Use single quotes where applicable **Note:** The equivalent _Markdown_ should be used in place of _HTML_ tags. @@ -296,7 +296,7 @@ Our goal is to communicate the single point that the challenge is trying to teac 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. In addition, the `__helpers` object exposes several functions that simplify the process of writing tests. The available functions are defined in _client/src/utils/curriculum-helpers.ts_. -## Formatting seed code +## Formatting Seed Code Here are specific formatting guidelines for the challenge seed code: @@ -304,13 +304,13 @@ Here are specific formatting guidelines for the challenge seed code: - JavaScript statements end with a semicolon - Use double quotes where applicable -### Seed code comments +### Seed Code Comments We have a [comment dictionary](https://github.com/freeCodeCamp/freeCodeCamp/blob/main/curriculum/dictionaries/english/comments.json) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team. Comments used should have a space between the comment characters and the comment themselves. In general, comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment. -Example of valid single line JavaScript comment: +Example of a valid single-line JavaScript comment: ```js // Only change code below this line @@ -366,7 +366,7 @@ class MyComponent extends React.Component { } ``` -### Translation of seed code comments +### Translation of Seed Code Comments There are separate comment dictionaries for each language. The [English version of the comment dictionary](https://github.com/freeCodeCamp/freeCodeCamp/blob/main/curriculum/dictionaries/english/comments.json) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.json`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment. @@ -388,16 +388,16 @@ If you find a problem with an existing challenge's hints/solutions topic, you ca ### Adding new Challenge hints/solutions Topics -Take the following steps when adding a new challenge hints/solutions related topic. +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 +### 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: +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 diff --git a/docs/i18n/chinese-traditional/how-to-work-on-localized-client-webapp.md b/docs/i18n/chinese-traditional/how-to-work-on-localized-client-webapp.md index fc038c4c929..e42472cd713 100644 --- a/docs/i18n/chinese-traditional/how-to-work-on-localized-client-webapp.md +++ b/docs/i18n/chinese-traditional/how-to-work-on-localized-client-webapp.md @@ -1,10 +1,10 @@ -# How to work on localized client webapp +# How to Work on Localized Client Webapp -The react based client web app that powers our learning platform is built using Gatsby. It is translated into various world languages using [react-i18next](https://react.i18next.com/) and [i18next](https://www.i18next.com/). +The React-based client web app that powers our learning platform is built using Gatsby. It is translated into various world languages using [react-i18next](https://react.i18next.com/) and [i18next](https://www.i18next.com/). -You can learn more about setting up the client application locally for development by following [our local setup guide here](how-to-setup-freecodecamp-locally.md). By default the application is available only in English. +You can learn more about setting up the client application locally for development by following [our local setup guide here](how-to-setup-freecodecamp-locally.md). By default, the application is available only in English. -Once you have setup the project locally you should be able to follow this documentation to run the client in the language of your choice from the list of available languages. +Once you have set up the project locally you should be able to follow this documentation to run the client in the language of your choice from the list of available languages. This could be helpful when you are working on a feature that specifically targets something that involves localization, and requires you to validate for instance a button's label in a different language. @@ -14,7 +14,7 @@ Let's understand how the i18n frameworks and tooling work. ## File Structure -Most of files for translating the platform are located in the [`client/i18n`](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/client/i18n) folder. Each language has a directory within that containing JSON files with the translations. +Most of the files for translating the platform are located in the [`client/i18n`](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/client/i18n) folder. Each language has a directory within that containing JSON files with the translations. ```console config @@ -55,11 +55,11 @@ Most of files for translating the platform are located in the [`client/i18n`](ht └── validate-keys.ts ``` -Some of these files are translated on our translation platform (Crowdin), some are translated or created via PR's on GitHub. +Some of these files are translated on our translation platform (Crowdin) and some are translated or created via PR's on GitHub. **Files translated on our translation platform:** -- The `translations.json` file contains the majority of the text that appears on the user interface elements. The keys are used in the codebase to get the correct text for whatever language is set. This file needs to have the exact same keys in all languages. +- The `translations.json` file contains the majority of the text that appears on the user interface elements. The keys are used in the codebase to get the correct text for whatever language is set. This file needs to have the same keys in all languages. - The `intro.json` file contains the key-value pairs for the introduction text on the certification pages. @@ -73,7 +73,7 @@ Some of these files are translated on our translation platform (Crowdin), some a Changes to these files are typically done by the staff team. If you see something out of the ordinary we recommend you reach us in the [contributors chat room](https://discord.gg/PRyKn3Vbay). -## Testing the client app in a world language +## Testing the Client App in a World Language You can test the client app in any language available in the [list of `availableLangs` here](https://github.com/freeCodeCamp/freeCodeCamp/blob/main/config/i18n.ts). @@ -198,7 +198,7 @@ import { Trans } from 'react-i18next'

Welcome to freeCodeCamp

``` -You can place the key inside the component tags like the above example if the text contains "simple" tags with no attributes. `br`, `strong`, `i`, and `p` are the default, but that list can be expanded in the i18n config. +You can place the key inside the component tags like in the above example if the text contains "simple" tags with no attributes. `br`, `strong`, `i`, and `p` are the default, but that list can be expanded in the i18n config. ### Complex Elements Nested @@ -264,7 +264,7 @@ The English file is the "source of truth" for all of the `.json` files sharing t It would be nice to keep the keys in the same order across all the files as well. Also, try to put all punctuation, spacing, quotes, etc in the JSON files and not in the components or server files. -> [!NOTE] The underscore (`_`) is a reserved character for keys in the client side files. See [the documentation](https://www.i18next.com/translation-function/plurals) for how they are used. +> [!NOTE] The underscore (`_`) is a reserved character for keys in the client-side files. See [the documentation](https://www.i18next.com/translation-function/plurals) for how they are used. ## Helpful Documentation diff --git a/docs/i18n/chinese-traditional/how-to-work-on-practice-projects.md b/docs/i18n/chinese-traditional/how-to-work-on-practice-projects.md index c9b339c62fb..a499583fae6 100644 --- a/docs/i18n/chinese-traditional/how-to-work-on-practice-projects.md +++ b/docs/i18n/chinese-traditional/how-to-work-on-practice-projects.md @@ -10,7 +10,7 @@ These instructions will tell you how to use our challenge editor tool to work on ### Starting the Editor -To start the editor, make sure you are in the root freecodecamp directory. Then, run `pnpm run challenge-editor` to start both the client and the API that powers the editor. +To start the editor, make sure you are in the root freeCodeCamp directory. Then, run `pnpm run challenge-editor` to start both the client and the API that powers the editor. The client will run on port `3300`, so you can access it at `http://localhost:3300`. The API runs on port `3200`, to avoid conflicts with the learn client and server. This will allow you to run the freeCodeCamp application at the same time as the editor, so you can test your changes locally. @@ -58,9 +58,9 @@ If you want to work on the steps manually, in your local IDE, you can run the st The `tools/challenge-helper-scripts` folder contains tools to help facilitate the creation and maintenance of the freeCodeCamp project-based curriculum. -### Create a new project +### Create a New Project -Run `pnpm run create-project` from the root directory. This opens up a command line ui that guides you through the process. Once that has finished, there should be a new challenge in the English curriculum that you can use for the first step of the project. For example, if you created a project called `test-project` in the Responsive Web Design certification, it would be in `curriculum/challenges/english/01-responsive-web-design/test-project`. +Change directory to `tools/challenge-helper-scripts` and run `pnpm run create-project`. This opens up a command line UI that guides you through the process. Once that has finished, there should be a new challenge in the English curriculum that you can use for the first step of the project. For example, if you created a project called `test-project` in the Responsive Web Design certification, it would be in `curriculum/challenges/english/01-responsive-web-design/test-project`. If you want to create new steps, the following tools simplify that process. @@ -68,7 +68,7 @@ If you want to create new steps, the following tools simplify that process. A one-off script that will automatically add the next step based on the last step in the project. The challenge seed code will use the previous step's challenge seed code. -#### How to run script: +#### How to Run the Script 1. Change to the directory of the project. 2. Run the following command: @@ -83,7 +83,7 @@ A one-off script that automatically adds a specified number of steps. The challe **Note:** This script also runs [update-step-titles](#update-step-titles). -#### How to run script: +#### How to Run the Script 1. Change to the directory of the project. 2. Run the following command: @@ -98,7 +98,7 @@ A one-off script that automatically adds a new step at a specified position, inc **Note:** This script also runs [update-step-titles](#update-step-titles). -#### How to run script: +#### How to Run the Script 1. Change to the directory of the project. 2. Run the following command: @@ -113,7 +113,7 @@ A one-off script that deletes an existing step, decrementing all subsequent step **Note:** This script also runs [update-step-titles](#update-step-titles). -#### How to run script +#### How to Run the Script 1. Change to the directory of the project. 2. Run the following command: @@ -126,7 +126,7 @@ pnpm run delete-step X # where X is the step number to be deleted. A one-off script that automatically updates the frontmatter in a project's markdown files so that they are consistent with the project's meta.json. It ensures that each step's title (and dashedName) match the meta's challengeOrder. -#### How to run script +#### How to Run the Script 1. Change to the directory of the project. 2. Run the following command: diff --git a/docs/i18n/chinese-traditional/how-to-work-on-the-component-library.md b/docs/i18n/chinese-traditional/how-to-work-on-the-component-library.md index 0d351dc9a34..58f2e03ea47 100644 --- a/docs/i18n/chinese-traditional/how-to-work-on-the-component-library.md +++ b/docs/i18n/chinese-traditional/how-to-work-on-the-component-library.md @@ -13,7 +13,7 @@ The following steps are recommended when working on a new component: - Display the use cases on Storybook - Write unit tests -## Researching and planning +## Researching and Planning Before building a component, you need to research and document on how the existing version behaves and looks, to ensure that the new one has matching styles and supports all the current usages. In order to meet the web accessibility requirements, you should also pay attention to the accessibility aspect of the component, see which HTML elements and ARIA attributes are used under the hood. @@ -23,7 +23,7 @@ We prefer smaller pull requests rather than a large one, because they speed up t We recommend opening a separate GitHub issue for each component and include all the notes in the issue description. It can be used as a place to host all of your working notes, as well as a way to communicate the approach with the reviewers. We will use the issue thread for further discussion if needed. [The issue for Button component](https://github.com/freeCodeCamp/freeCodeCamp/issues/45357) can be used as a reference. -## Implementing the component +## Implementing the Component A new component can be created using the following command from the root directory: @@ -43,25 +43,25 @@ The command will generate a new folder inside the `ui-components` directory, wit | `my-component.tsx` | It is where we implement the component. | | `types.ts` | It is where we locate the component's interface and types. | -Each component is different, but in general a component should: +Each component is different, but in general, a component should: - Support forwarding ref - Be styled for both light and dark themes - Be styled internally based on their props (the consumers should not need to restyle the component with the `className` prop) - Utilize the built-in styling system from Tailwind instead of having custom styles -### Using colors +### Using Colors There are two color "layers" in the component library: - The base layer, where the color names describe what the colors are, e.g. `gray00`, `blue50` - The semantic layer, where the color names describe what the colors are for, e.g. `foreground-primary`, `background-danger` -Generally when using colors in a component, you should choose semantic variables over the base ones. There are exceptions, however, specifically when you are styling the component's states such as hover, active, disabled, etc. In these cases, we recommend using the base variables directly instead of creating new semantic variables, since each component can have different styles for their states. +Generally, when using colors in a component, you should choose semantic variables over the base ones. There are exceptions, however, specifically when you are styling the component's states such as hover, active, disabled, etc. In these cases, we recommend using the base variables directly instead of creating new semantic variables, since each component can have different styles for its states. > [!NOTE] Color definition can be found in the [`colors.css` file](https://github.com/freeCodeCamp/freeCodeCamp/blob/main/tools/ui-components/src/colors.css). A color is only available for use if it is added to the [`tailwind.config.js` file](https://github.com/freeCodeCamp/freeCodeCamp/blob/main/tools/ui-components/tailwind.config.js) under the `colors` property. -### Useful links +### Useful Links - [Tailwind CSS Configuration](https://tailwindcss.com/docs/configuration) - [React Bootstrap v0.33 Docs](https://react-bootstrap-v3.netlify.app) @@ -69,7 +69,7 @@ Generally when using colors in a component, you should choose semantic variables - [React Bootstrap current implementation](https://github.com/react-bootstrap/react-bootstrap/tree/master/src) - [React Bootstrap current tests](https://github.com/react-bootstrap/react-bootstrap/tree/master/test) -## Displaying the use cases on Storybook +## Displaying the Use Cases on Storybook Use cases of the component should be added to the Storybook file (`.stories.tsx`). @@ -81,7 +81,7 @@ pnpm run storybook The Storybook page is available on [http://localhost:6006](http://localhost:6006). -## Writing unit tests +## Writing Unit Tests We use [React Testing Library](https://testing-library.com/docs/react-testing-library/intro/) to write unit tests. The tests should assert that the components behave as expected and are accessible. @@ -91,7 +91,7 @@ To run tests against the component library, run the following command from the r pnpm run test-ui-components ``` -## Adding packages to the UI-Component library +## Adding Packages to the UI-Component Library We restrict adding new packages to the UI Components to help with the project's maintainability. In the rare chance that you think a dependency is needed, please check with the maintainers first and then use the following command to add a package: @@ -100,7 +100,7 @@ cd tools/ui-components pnpm add package_name ``` -### Useful links +### Useful Links - [Testing for Accessibility](https://testing-library.com/docs/dom-testing-library/api-accessibility) - [Order of priority of React Testing Library's queries](https://testing-library.com/docs/queries/about/#priority) diff --git a/docs/i18n/chinese-traditional/how-to-work-on-the-docs-theme.md b/docs/i18n/chinese-traditional/how-to-work-on-the-docs-theme.md index 284f7072a82..9e6080da9be 100644 --- a/docs/i18n/chinese-traditional/how-to-work-on-the-docs-theme.md +++ b/docs/i18n/chinese-traditional/how-to-work-on-the-docs-theme.md @@ -1,12 +1,12 @@ -# How to work on documentation +# How to Work on Documentation -## Work on the content of the docs +## Work on the Content of the Docs To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/docs). When your changes are merged, they will be made available automatically at the documentation site. When adding a new file to the `docs` directory, you should evaluate if the file should also be added to the sidebar navigation. We typically create a link in the [`_sidebar.md`](_sidebar.md) file for new and independent guides. Alternatively, You may follow the instructions below on creating an internal link for supporting guides. -### How to create an internal link +### How to Create an Internal Link If you want to create a link targeting a different section of the contributing guidelines, follow this format: @@ -25,13 +25,13 @@ This is necessary to make these links work for the translated version of the doc When you work on translating docs on Crowdin, make sure to replace the `#target-section-heading-id` with the id on the translated document. [Learn more about translating docs here](how-to-translate-files.md#translate-documentation). -## Work on the docs theme +## Work on the Docs Theme > [!NOTE] A quick reminder that you do not need to set up anything for working on the content for the documentation site. > > To work on the contributing guidelines, see [work on the docs content](#work-on-the-docs-content) section. -### Structure of the docs website +### Structure of the Docs Website The site is generated using [`docsify`](https://docsify.js.org) and served using GitHub pages. @@ -43,20 +43,14 @@ Typically you would not need to change any configuration or build the site local - 主頁是由 [`_coverpage.md`](_coverpage.md) 生成的。 - The sidebar navigation is generated from [`_sidebar.md`](_sidebar.md). -### Serving the documentation site locally +### Serving the Documentation Site Locally -Install freeCodeCamp locally ([see the local setup guide](how-to-setup-freecodecamp-locally)), we bundled the CLI with the development tools so you can run any of the below commands as needed from the root of the repo: +Install freeCodeCamp locally ([see the local setup guide](how-to-setup-freecodecamp-locally)), we bundled the CLI with the development tools so you can run the command below as needed from the root of the repo: -#### Serve and launch the documentation site only +#### Serve and Launch the Documentation Site ```console pnpm run docs:serve ``` -#### Serve the documentation site alongside freeCodeCamp locally: - -```console -pnpm run develop -``` - > The documentation site should be available at diff --git a/docs/i18n/chinese-traditional/how-to-work-on-tutorials-that-use-coderoad.md b/docs/i18n/chinese-traditional/how-to-work-on-tutorials-that-use-coderoad.md index 6a0c42d0dfa..b4f3ab4a1d9 100644 --- a/docs/i18n/chinese-traditional/how-to-work-on-tutorials-that-use-coderoad.md +++ b/docs/i18n/chinese-traditional/how-to-work-on-tutorials-that-use-coderoad.md @@ -1,8 +1,8 @@ This page describes how to contribute to the freeCodeCamp tutorials and projects that are completed using the CodeRoad VS Code extension. -## How the tutorials work +## How the Tutorials Work -The freeCodeCamp tutorials that use CodeRoad each have their own repo under the freeCodeCamp GitHub organization. They all start with `learn-`. For example, `https://github.com/freeCodeCamp/learn-bash-by-building-a-boilerplate/`. +Each of the freeCodeCamp tutorials that use CodeRoad has its own repo under the freeCodeCamp GitHub organization. They all start with `learn-`. For example, `https://github.com/freeCodeCamp/learn-bash-by-building-a-boilerplate/`. Each tutorial repo has a `main` branch and a "version" branch, e.g. `v1.0.0`. @@ -18,7 +18,7 @@ In order to make changes to commits on a version branch, you would need to rebas > > Never make or push changes to a version branch that is on one of the freeCodeCamp repos. Always create a new one -## How to contribute +## How to Contribute ### Prerequisites @@ -49,7 +49,7 @@ Follow these instructions to make a PR, keeping in mind that instructions usuall - Commit the changes with `update json` as the message - Make a PR -### Testing changes on `main` +### Testing Changes on `main` If you want to test your changes to `main` after using the above instructions, follow these instructions: @@ -64,7 +64,7 @@ The `tutorial.json` file should not have changes to commit hashes, or step/level Also, keep in mind that instructions usually use the lessons around them for context, so make sure they make sense. -### Working on version branch +### Working on Version Branch > [!WARNING] > @@ -91,12 +91,12 @@ Follow these instructions to create a new version: - Make a PR to `main` using your new `feat/version-X.X.Y` branch. Give it a title of `version X.X.Y ready for review`. This will not be merged, it is just to let reviewers know that there is a new version ready - Leave it here for reviewers -### Testing changes to a version branch +### Testing Changes to a Version Branch - Follow the instructions on the [rdb-alpha repo](https://github.com/freeCodeCamp/rdb-alpha) to run a container - Start the tutorial using the `tutorial.json` file on whatever fork the changes are on. Make sure to use the file on the `feat: version-X.X.Y` branch and not the `main` branch -### Pushing a new version +### Pushing a New Version Before pushing a new version, view the new `feat/version-vX.X.Y` (will be merged to `main`) branch on the user's fork. Make sure there are additions to the `CHANGELOG.md` file that include the new changes, and the version in the two spots of `coderoad.yaml` matches the new version branch. @@ -121,7 +121,7 @@ If you have write access to the freeCodeCamp repo, have verified the `CHANGELOG` - After the PR is merged, open the tutorial by following the instructions on the [rdb-alpha repo](https://github.com/freeCodeCamp/rdb-alpha) to make sure it's loading properly, and that you can get through a few steps - Finally, if any PRs for this version exists, close them -### How to revert to a previous version +### How to Revert to a Previous Version - Create a new branch off the latest `main` with `git checkout -b revert/to-version-X.X.X` - Revert all commits on this branch up to and including the commit of the version after the one you want to revert to. For example, you may have commits that look like this: diff --git a/docs/i18n/chinese-traditional/language-lead-handbook.md b/docs/i18n/chinese-traditional/language-lead-handbook.md index f67b8ce9340..cabb5ce8bfe 100644 --- a/docs/i18n/chinese-traditional/language-lead-handbook.md +++ b/docs/i18n/chinese-traditional/language-lead-handbook.md @@ -2,9 +2,9 @@ This handbook will help you set up and use the tools for your localization efforts. -## How to invite new contributors to Ghost +## How to Invite New Contributors to Ghost -Ghost allows you to set contributors with different levels of authorizations. +Ghost allows you to set contributors with different levels of authorization. Most of your invites will be for the "Contributor" level. This level allows the user to create drafts. Select this role when inviting a new translator. @@ -14,7 +14,7 @@ The "Editor" level allows the user to access all Drafts and publish them. Select The "Administrator" level is reserved for freeCodeCamp staff and Language Leads. -### How are the articles built +### How are the Articles Built We use a [JAMStack](https://www.google.com/search?q=what+is+jamstack)-based approach to build and deploy the articles. This strategy makes for a speedy static site cached and served from a CDN. @@ -24,9 +24,9 @@ This process is automated and runs periodically. If you publish something now, i You can find the up-to-date build schedules and status here: https://github.com/freeCodeCamp/news#build -## How to mention the original author of a translated article +## How to Mention the Original Author of a Translated Article -The original author and the original article are linked automatically adding this code to the Code Injection -> head section in the Draft Settings on ghost. +The original author and the original article are linked automatically adding this code to the Code Injection -> head section in the Draft Settings on Ghost. ```html