chore(i18n,docs): processed translations (#50030)

This commit is contained in:
camperbot
2023-04-10 21:10:37 +05:30
committed by GitHub
parent 67c4723a06
commit c21ca3c6d0
184 changed files with 1964 additions and 2011 deletions

View File

@@ -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?

View File

@@ -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 <version>
```
> [!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

View File

@@ -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:

View File

@@ -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
<details><summary>Installing MailHog with Docker</summary>

View File

@@ -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', {

View File

@@ -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).

View File

@@ -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 <pr-branch>
```
### 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:

View File

@@ -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.

View File

@@ -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
<img src="https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/main/docs/images/github/how-to-fork-freeCodeCamp.gif" alt="How to fork freeCodeCamp on GitHub" />
</details>
## 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 <http://localhost:3000/explorer> 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.

View File

@@ -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

View File

@@ -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)

View File

@@ -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.

View File

@@ -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

View File

@@ -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'
<p>Welcome to <strong>freeCodeCamp</strong></p>
```
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

View File

@@ -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:

View File

@@ -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)

View File

@@ -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 <http://localhost:3400>

View File

@@ -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:

View File

@@ -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
<script>
@@ -36,24 +36,24 @@ The original author and the original article are linked automatically adding thi
With `link` being the link of the original article.
## How to update trending articles
## How to Update Trending Articles
> [!TIP] Changing the articles in the footer at least once a month means giving a boost to the linked articles on google results.
> [!TIP] Changing the articles in the footer at least once a month means giving a boost to the linked articles on Google results.
There are two places in which to change the trending articles.
- [The curriculum repository](https://github.com/freeCodeCamp/freeCodeCamp/)
- [The CDN repository](https://github.com/freeCodeCamp/cdn)
For each article you will need to create a shorter title to use in the footer.
For each article, you will need to create a shorter title to use in the footer.
### Change trending articles in the curriculum
### Change Trending Articles in the Curriculum
The trending articles in the curriculum footer can be changed by editing the file at `client/i18n/locales/<language>/trending.json`.
This file is a `*.json` file that has the shape of an object with property keys in the shape `article0title` and `article0link`.
Each number rapresents one of the 30 articles in the footer. Make sure to match the title and the link correctly.
Each number represents one of the 30 articles in the footer. Make sure to match the title and the link correctly.
This is an example of how part of the `trending.json` file has to look.
@@ -77,11 +77,11 @@ This is an example of how part of the `trending.json` file has to look.
You will want to [build the translated client locally](how-to-enable-new-languages.md) to see if the titles have the right length. Each title must stay on a single line and not go to a new line.
### How to update the trending articles in the cdn
### How to Update the Trending Articles in the CDN
The file in the cdn repository is the file `universal/trending/<language>.yaml`.
The file in the CDN repository is the file `universal/trending/<language>.yaml`.
This file is shaped differently, for example here the file content for the first 6 articles:
This file is shaped differently. For example, here is the file content for the first 6 articles:
```yaml
article0title: 'Unire CSV con Python'
@@ -102,9 +102,9 @@ You can convert from one format to the other carefully changing it manually. Or
> [!TIP] A new workflow is being worked on, there will be only one place to change in the future.
## How to translate articles in the footer links
## How to Translate Articles in the Footer Links
There are some links listed at the bottom of the footer (About, Alumni Network, Open Source etc.) and some of them can be translated into your language in the same way as other articles.
There are some links listed at the bottom of the footer (About, Alumni Network, Open Source, etc.) and some of them can be translated into your language in the same way as other articles.
Articles that can be translated:
@@ -126,7 +126,7 @@ The following links are pointing to external sites and cannot be translated:
- Alumni Network
- Open Source
### Change the footer links in the news
### Change the Footer Links in the News
Once you have translated and published the articles listed as "can be translated" above, you can update the links in the footer for `/news` by editing the file at `news/config/i18n/locales/<your language>/links.json` in the [freeCodeCamp/news](https://github.com/freeCodeCamp/news) repository.
@@ -146,7 +146,7 @@ Update the following part in the file:
}
```
### Change the footer links in the curriculum
### Change the Footer Links in the Curriculum
When you have translated and published the articles listed as "can be translated" above, as well as when the curriculum in your language is ready for launch, you can update the links in the footer for `/learn` by editing the file at `client/i18n/locales/<your language>/links.json` in the [freeCodeCamp/freeCodeCamp](https://github.com/freeCodeCamp/freeCodeCamp) repository.
@@ -172,7 +172,7 @@ Update the following part in the file:
}
```
## How to translate the info boxes headers in the documentation
## How to Translate the Info Boxes Headers in the Documentation
You can find these boxes all around the documentation:
@@ -248,7 +248,7 @@ flexibleAlerts: {
}
```
## How to translate the motivational quotes
## How to Translate the Motivational Quotes
The motivational quotes can be found in the [curriculum repository](https://github.com/freeCodeCamp/freeCodeCamp/) in the `/client/i18n/locales/<language>/motivation.json` file.
@@ -265,7 +265,7 @@ The compliments are the short sentences that appear at the completion of a chall
You don't need to directly translate the sentences used in English, you can write a set of short sentences that are appropriate to show at the completion of a challenge.
The `compliments` array is an array of strings, so for example you would write:
The `compliments` array is an array of strings. So, for example, you would write:
```json
{
@@ -296,9 +296,9 @@ The `motivationalQuotes` array is an array of objects, these objects should incl
}
```
> [!TIP] You should start with at least a dozen quotes, to have some variety. A new quote is shown every time the user reload the page.
> [!TIP] You should start with at least a dozen quotes, to have some variety. A new quote is shown every time the user reloads the page.
## How to update the common links
## How to Update the Common Links
We maintain a file of common links used throughout our [curriculum site](https://github.com/freecodecamp/freecodecamp) in the `/client/i18n/locales/<language>/links.json` file.
@@ -306,7 +306,7 @@ Some of these links will not change - but you should update the `/news` article
You should also update the `help` categories to point to your language's subforum (usually `language/category`, like `Italiano/HTML-CSS`). This will allow campers to create "help posts" in the correct forum location.
## How to update the site meta-data
## How to Update the Site Meta-Data
The site meta-data is in the `/client/i18n/locales/<language>/meta-tags.json` file. This file has five keys: `title`, `description`, `social-description`, `keywords`, and `youre-unsubscribed`.
@@ -330,7 +330,7 @@ You can choose "From Machine Translation" or "From Translation Memory". Choose "
Then there are three steps to complete:
1. Files. Choose which files to translate, you can do all the project, or specific folders or files.
1. Files. Choose which files to translate, you can do all the projects, or specific folders or files.
2. Languages. Set your language here.
3. Existing Translations. The best combination here is "100% match" and "Apply to untranslated strings only". Do not approve automatically, as it's always best to have a human eye on things.
@@ -338,35 +338,35 @@ Then there are three steps to complete:
When you have finished setting this, press the Pre-Translate button and wait. It will alert you once it has finished. The time it takes depends on how many untranslated strings are in the chosen files.
## How to update Crowdin Glossary
## How to Update Crowdin Glossary
> [!TIP] An updated glossary helps in having an homogeneous translation of technical terms.
> [!TIP] An updated glossary helps in having a homogeneous translation of technical terms.
The Crowdin Glossary is kept in the [crowdin-glossaries](https://github.com/freeCodeCamp/crowdin-glossaries) repository.
In the `glossaries` folder there are various `*.csv` (comma separated values) files, one for each of the crowdin projects that have a glossary that can be updated from this workflow.
In the `glossaries` folder, there are various `*.csv` (comma,separated values) files, one for each of the crowdin projects that have a glossary that can be updated from this workflow.
The `client.csv` file is for the Learn User Interface project, the `curriculum.csv` file is for the Coding Curriculum project, the `docs.csv` file is for the Contributing Documentation project.
To update the Crowdin Glossaries you need to clone this repo locally. Open the `.csv` file with an appropriate program, for example Microsoft Excel.
To update the Crowdin Glossaries, you need to clone this repo locally. Open the `.csv` file with an appropriate program, for example, Microsoft Excel.
In the `.csv` file you will find that the English language occupies the first three columns, `Term:English` is the column for the English term, `Description:English` is the column for the English description, and `Part:English` is for the part of speech (e.g., noun, verb etc.) of the term.
Then, each target language has two columns. If you translate to Dothraki, you will be interested in the columns `Term:Dothraki` and `Description:Dothraki`. The column `Term:Dothraki` is for the translation of the term in Dothraki, and the column `Description:Dothraki` is for a description of the term in Dothraki.
> [!TIP] In programs like Microsoft Excel you can hide the columns of the other languages to free up screen real-estate and see the English columns and the target language columns near each other.
> [!TIP] In programs like Microsoft Excel, you can hide the columns of the other languages to free up screen real-estate and see the English columns and the target language columns near each other.
After you have made the changes and saved the file, you will need to make a PR with the proposed changes. After the PR is accepted, you will need to run the GitHub Action workflow to update the Crowdin Glossary. Your glossary changes will not have immediate effects, but they will come.
## How to Promote a Contributor to Proofreader
If you consider that a contributor could become a Crowdin Proofreader, you can give the proofreader role to them in this way:
If you consider that a contributor could become a Crowdin Proofreader, you can give the proofreader role to them this way:
In Crowdin, individuate the `User management` on the left hand side menu.
In Crowdin, individuate the `User management` on the left-hand side menu.
This will open the user management tools, you will be able to see the list of all the users.
Search for the user that will become proofreader. Use the three dots menu on the user row to open a menu and select "Add to team". The proofreader teams have a standard name of `Proof Readers (<language>)`, you can search the team using the language name. Once you have selected the team, use the "ADD" button at the bottom of the page to finalize the thing.
Search for the user that will become a proofreader. Use the three dots menu on the user row to open a menu and select "Add to team". The proofreader teams have a standard name of `Proof Readers (<language>)`, you can search the team using the language name. Once you have selected the team, use the "ADD" button at the bottom of the page to finalize the thing.
The user is now a proofreader.

View File

@@ -18,7 +18,7 @@ freeCodeCamp 是一個包容的社區,我們需要保持這種狀態。
We have a single [Code of Conduct](https://code-of-conduct.freecodecamp.org) that governs our entire community. 規則越少,就越容易記住。 你可以在[這裏](https://code-of-conduct.freecodecamp.org)閱讀這些規則,並把它們記在心裏。
> [!NOTE] As a moderator we would add you to one or more teams on GitHub, our community forums & chat servers. If you are missing access on a platform that you would like to moderate, please [reach out to a staff member](FAQ.md#additional-assistance).
> [!NOTE] As a moderator, we would add you to one or more teams on GitHub, our community forums & chat servers. If you are missing access on a platform that you would like to moderate, please [reach out to a staff member](FAQ.md#additional-assistance).
## 管理 GitHub
@@ -77,7 +77,7 @@ Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's reposi
You can close invalid pull requests and reply to them with these [reply templates](moderator-handbook.md#closing-invalid-pull-requests).
If the changes look good, please ensure to leave an approval with a "LGTM" comment. Once a pull request gets at least two approvals (including yours) from the moderators or the dev-team, you can go ahead and merge it.
If the changes look good, please ensure to leave an approval with an "LGTM" comment. Once a pull request gets at least two approvals (including yours) from the moderators or the dev-team, you can go ahead and merge it.
3. **Platform changes**
@@ -91,15 +91,15 @@ Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's reposi
Some PRs are automated dependency updates made via an integration. You should not merge or approve these PRs. One of the dev-team members will take care of reviewing and merging such automated PRs.
#### How to review, merge or close pull requests
#### How to Review, Merge, or Close Pull Requests
##### Assign yourself to a pull request:
##### Assign yourself to a Pull Request:
First of all, when you choose a pull request to review, 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 previously.
##### Ensure the CI checks are passing:
##### Ensure the CI Checks are Passing:
Before merging any pull request, make sure that GitHub is reporting all checks to be passing (green check marks) on the pull requests. If you see any of the checks failing, please investigate and clarify the root cause. Is the change being made breaking our tests? Will the site build correctly if the PR is merged? These checks are critical for the stability of the platform.
@@ -115,7 +115,7 @@ The pull request's changes will be on top, and the main branch's changes will be
If you are uncertain, please ask one of the fellow moderators or the dev-team for assistance.
##### Merging a valid pull request:
##### Merging a Valid Pull Request:
If the pull request looks ready to merge (and doesn't require additional approvals - remember we require at least two), you can go ahead and merge it. Be sure to use the default **"Squash and Merge"** option. This will squash all the pull requests commits down into a single commit, making the Git history much easier to read.
@@ -189,7 +189,7 @@ Again, if you have any problems or questions, make a post with your actions in t
If a user replies in a help thread for the freeCodeCamp curriculum with a solution, remove it and use the **Solution Instead of Help** canned reply (or a similar response in your own words).
If the OP (Original Poster) replies within a freeCodeCamp curriculum help thread with their final solution, blur it and use the **Blurred Spoiler Solution** canned reply.
If the OP (Original Poster) replies within a freeCodeCamp curriculum help thread with their final solution, blur it, and use the **Blurred Spoiler Solution** canned reply.
If a user creates a thread asking for feedback on a solution, move the thread to the feedback subforum and blur the solution, as necessary. If the user is only posting the solution to show it off, then unlist the thread and use the **Solutions Thread** canned reply.
@@ -207,9 +207,9 @@ Please rejoin once you have reached at least 13 years of age.
Thank you for understanding.
```
### Moderating Via Cell-phone
### Moderating Via Cell Phone
Moderating the forum is possible via a cell-phone but you may encounter some usage quirks. This is not an exhaustive list.
Moderating the forum is possible via a cell phone but you may encounter some usage quirks. This is not an exhaustive list.
- When trying to include a "Canned reply" in a response, if the menu doesn't open (after clicking on the gear), click on the text area first then try it again.
- The moderator's 'wrench' is at the bottom of the view-port but if you click it and cannot see the "Select Posts" button because it has scrolled out of view, you may need to try to scroll to it, though sometimes that doesn't work in which case moving to a desktop/laptop monitor may be needed.
@@ -231,7 +231,7 @@ Here's how moderators deal with violations of our [Code of Conduct](https://code
1. **Make sure the user intended to violate the [Code of Conduct](https://code-of-conduct.freecodecamp.org).**
Not all violations of the [Code of Conduct](https://code-of-conduct.freecodecamp.org) were intended as such. A new camper might post a large amount of code for help, unaware that this can be disruptive to conversation. In these cases, you can just ask them to paste their code with services like CodePen or Pastebin.
Not all violations of the [Code of Conduct](https://code-of-conduct.freecodecamp.org) were intended as such. A new camper might post a large amount of code for help, unaware that this can be disruptive to the conversation. In these cases, you can just ask them to paste their code with services like CodePen or Pastebin.
2. **If the camper clearly and intentionally violates the [Code of Conduct](https://code-of-conduct.freecodecamp.org), the moderator will proceed as follows:**
@@ -450,7 +450,7 @@ Also, it's good practice on GitHub to write a brief description of your changes
```markdown
Hey @username
This PR seems to make similar changes as the existing PR <#number>. As such, we are going to close this as duplicate.
This PR seems to make similar changes as the existing PR <#number>. As such, we are going to close this as a duplicate.
If you feel you have additional changes to expand upon this PR, please feel free to push your commits and request this PR be reopened.
@@ -485,7 +485,7 @@ We are closing this pull request. Please suggest links and other details to add
If you think we're wrong in closing this issue, please request for it to be reopened and add further clarification. Thank you and happy coding.
```
### Adding comment about newbie mistakes
### Adding Comment About Newbie Mistakes
```markdown
As a new contributor, we encourage you to read our [contributing guidelines](https://contribute.freecodecamp.org).

View File

@@ -20,7 +20,7 @@ After confirming the above guidelines, please feel free to send an email to `pos
Once you report a vulnerability, we will look into it and ensure that it is not a false positive. If we need to clarify any details, we will get back to you. You can submit separate reports for each issue you find. Please note that we will not be able to respond to any issues that we think are outside the guidelines.
## Platforms & Codebases
## Platforms and Codebases
Here is a list of the platforms and codebases we are accepting reports for:

View File

@@ -1,6 +1,6 @@
If you are facing issue, there is a high chance that the resolution is in this documentation.
If you are facing an issue, there is a high chance that the resolution is in this documentation.
### Issues with installing the recommended prerequisites
## 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).
@@ -12,9 +12,9 @@ If you are on a different OS or are still facing issues, see [getting help](#get
>
> Please avoid creating GitHub issues for problems with the prerequisite technologies. They are out of the scope of this project.
### Issues missing the UI, Fonts, language strings, or build errors.
## Issues with Missing UI, Fonts, Language Strings, or Build Errors
When you build the client, Gatsby will cache the Fonts, language strings and UI. If one of them isn't cached, run the following:
When you build the client, Gatsby will cache the Fonts, language strings, and UI. If one of them isn't cached, run the following:
```console
pnpm run clean
@@ -48,7 +48,7 @@ git clean -ifdX
<img src="https://user-images.githubusercontent.com/1884376/94270515-ca579400-ff5d-11ea-8ff1-152cade31654.gif" alt="How to clean git untracked files" />
</details>
### Issues with API, login, Challenge Submissions, etc.
## 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.
@@ -74,19 +74,19 @@ TCP 0.0.0.0:3000 DESKTOP LISTENING
---
### Issues signing out while navigating
## Issues Signing Out while Navigating
While in development, your session is stored as cookies. Clearing them will sign you out of your development account.
Running `pnpm run seed:certified-user` will log you out, too. It will overwrite the development user in your local database.
### Issue getting 404 when navigating profile page
## Issue Getting 404 when Navigating Profile Page
When you try to navigate to http://localhost:8000/developmentuser to view the profile page, Gatsby takes over serving the client-side pages and hence you will get a 404 page for the user profile when working.
There is a "Preview Custom 404 Page" button, click it to see the profile.
### Issues installing dependencies
## Issues Installing DDependencies
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.

View File

@@ -2,14 +2,14 @@
User tokens are used to identify users to third parties so challenges completed using those services can be saved to a user's account.
## How they are created
## How they are Created
At the moment, the tokens are only used to submit the Relational Database challenges. A token gets created when a signed-in user clicks the "Click here to start the course" or "Click here to start the project" buttons to start one of the Relational Database courses or projects.
## When they get deleted
## When they Get Deleted
A user token will be deleted when a user signs out of freeCodeCamp, resets their progress, deletes their account, or manually deletes the token using the widget on the settings page.
## How they work
## How they Work
Tokens are stored in a `UserToken` collection in the database. Each record has a unique `_id`, which is the token, and a `user_id` that links to the user's account from the `user` collection. The token is encoded using JWT and sent to the client when it's created. That encoded token is then given to third-party services that need it and sent to our API by them when a challenge is completed. When our API gets it, it is decoded so we can identify the user submitting a challenge and save the completed challenge to their `completedChallenges`.

View File

@@ -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?

View File

@@ -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 <version>
```
> [!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

View File

@@ -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:

View File

@@ -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
<details><summary>Installing MailHog with Docker</summary>

View File

@@ -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', {

View File

@@ -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).

View File

@@ -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 <pr-branch>
```
### 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:

View File

@@ -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.

View File

@@ -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
<img src="https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/main/docs/images/github/how-to-fork-freeCodeCamp.gif" alt="How to fork freeCodeCamp on GitHub" />
</details>
## 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 <http://localhost:3000/explorer> 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.

View File

@@ -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

View File

@@ -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)

View File

@@ -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.

View File

@@ -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

View File

@@ -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'
<p>Welcome to <strong>freeCodeCamp</strong></p>
```
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

View File

@@ -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:

View File

@@ -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)

View File

@@ -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 <http://localhost:3400>

View File

@@ -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:

View File

@@ -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
<script>
@@ -36,24 +36,24 @@ The original author and the original article are linked automatically adding thi
With `link` being the link of the original article.
## How to update trending articles
## How to Update Trending Articles
> [!TIP] Changing the articles in the footer at least once a month means giving a boost to the linked articles on google results.
> [!TIP] Changing the articles in the footer at least once a month means giving a boost to the linked articles on Google results.
There are two places in which to change the trending articles.
- [The curriculum repository](https://github.com/freeCodeCamp/freeCodeCamp/)
- [The CDN repository](https://github.com/freeCodeCamp/cdn)
For each article you will need to create a shorter title to use in the footer.
For each article, you will need to create a shorter title to use in the footer.
### Change trending articles in the curriculum
### Change Trending Articles in the Curriculum
The trending articles in the curriculum footer can be changed by editing the file at `client/i18n/locales/<language>/trending.json`.
This file is a `*.json` file that has the shape of an object with property keys in the shape `article0title` and `article0link`.
Each number rapresents one of the 30 articles in the footer. Make sure to match the title and the link correctly.
Each number represents one of the 30 articles in the footer. Make sure to match the title and the link correctly.
This is an example of how part of the `trending.json` file has to look.
@@ -77,11 +77,11 @@ This is an example of how part of the `trending.json` file has to look.
You will want to [build the translated client locally](how-to-enable-new-languages.md) to see if the titles have the right length. Each title must stay on a single line and not go to a new line.
### How to update the trending articles in the cdn
### How to Update the Trending Articles in the CDN
The file in the cdn repository is the file `universal/trending/<language>.yaml`.
The file in the CDN repository is the file `universal/trending/<language>.yaml`.
This file is shaped differently, for example here the file content for the first 6 articles:
This file is shaped differently. For example, here is the file content for the first 6 articles:
```yaml
article0title: 'Unire CSV con Python'
@@ -102,9 +102,9 @@ You can convert from one format to the other carefully changing it manually. Or
> [!TIP] A new workflow is being worked on, there will be only one place to change in the future.
## How to translate articles in the footer links
## How to Translate Articles in the Footer Links
There are some links listed at the bottom of the footer (About, Alumni Network, Open Source etc.) and some of them can be translated into your language in the same way as other articles.
There are some links listed at the bottom of the footer (About, Alumni Network, Open Source, etc.) and some of them can be translated into your language in the same way as other articles.
Articles that can be translated:
@@ -126,7 +126,7 @@ The following links are pointing to external sites and cannot be translated:
- Alumni Network
- Open Source
### Change the footer links in the news
### Change the Footer Links in the News
Once you have translated and published the articles listed as "can be translated" above, you can update the links in the footer for `/news` by editing the file at `news/config/i18n/locales/<your language>/links.json` in the [freeCodeCamp/news](https://github.com/freeCodeCamp/news) repository.
@@ -146,7 +146,7 @@ Update the following part in the file:
}
```
### Change the footer links in the curriculum
### Change the Footer Links in the Curriculum
When you have translated and published the articles listed as "can be translated" above, as well as when the curriculum in your language is ready for launch, you can update the links in the footer for `/learn` by editing the file at `client/i18n/locales/<your language>/links.json` in the [freeCodeCamp/freeCodeCamp](https://github.com/freeCodeCamp/freeCodeCamp) repository.
@@ -172,7 +172,7 @@ Update the following part in the file:
}
```
## How to translate the info boxes headers in the documentation
## How to Translate the Info Boxes Headers in the Documentation
You can find these boxes all around the documentation:
@@ -248,7 +248,7 @@ flexibleAlerts: {
}
```
## How to translate the motivational quotes
## How to Translate the Motivational Quotes
The motivational quotes can be found in the [curriculum repository](https://github.com/freeCodeCamp/freeCodeCamp/) in the `/client/i18n/locales/<language>/motivation.json` file.
@@ -265,7 +265,7 @@ The compliments are the short sentences that appear at the completion of a chall
You don't need to directly translate the sentences used in English, you can write a set of short sentences that are appropriate to show at the completion of a challenge.
The `compliments` array is an array of strings, so for example you would write:
The `compliments` array is an array of strings. So, for example, you would write:
```json
{
@@ -296,9 +296,9 @@ The `motivationalQuotes` array is an array of objects, these objects should incl
}
```
> [!TIP] You should start with at least a dozen quotes, to have some variety. A new quote is shown every time the user reload the page.
> [!TIP] You should start with at least a dozen quotes, to have some variety. A new quote is shown every time the user reloads the page.
## How to update the common links
## How to Update the Common Links
We maintain a file of common links used throughout our [curriculum site](https://github.com/freecodecamp/freecodecamp) in the `/client/i18n/locales/<language>/links.json` file.
@@ -306,7 +306,7 @@ Some of these links will not change - but you should update the `/news` article
You should also update the `help` categories to point to your language's subforum (usually `language/category`, like `Italiano/HTML-CSS`). This will allow campers to create "help posts" in the correct forum location.
## How to update the site meta-data
## How to Update the Site Meta-Data
The site meta-data is in the `/client/i18n/locales/<language>/meta-tags.json` file. This file has five keys: `title`, `description`, `social-description`, `keywords`, and `youre-unsubscribed`.
@@ -330,7 +330,7 @@ You can choose "From Machine Translation" or "From Translation Memory". Choose "
Then there are three steps to complete:
1. Files. Choose which files to translate, you can do all the project, or specific folders or files.
1. Files. Choose which files to translate, you can do all the projects, or specific folders or files.
2. Languages. Set your language here.
3. Existing Translations. The best combination here is "100% match" and "Apply to untranslated strings only". Do not approve automatically, as it's always best to have a human eye on things.
@@ -338,35 +338,35 @@ Then there are three steps to complete:
When you have finished setting this, press the Pre-Translate button and wait. It will alert you once it has finished. The time it takes depends on how many untranslated strings are in the chosen files.
## How to update Crowdin Glossary
## How to Update Crowdin Glossary
> [!TIP] An updated glossary helps in having an homogeneous translation of technical terms.
> [!TIP] An updated glossary helps in having a homogeneous translation of technical terms.
The Crowdin Glossary is kept in the [crowdin-glossaries](https://github.com/freeCodeCamp/crowdin-glossaries) repository.
In the `glossaries` folder there are various `*.csv` (comma separated values) files, one for each of the crowdin projects that have a glossary that can be updated from this workflow.
In the `glossaries` folder, there are various `*.csv` (comma,separated values) files, one for each of the crowdin projects that have a glossary that can be updated from this workflow.
The `client.csv` file is for the Learn User Interface project, the `curriculum.csv` file is for the Coding Curriculum project, the `docs.csv` file is for the Contributing Documentation project.
To update the Crowdin Glossaries you need to clone this repo locally. Open the `.csv` file with an appropriate program, for example Microsoft Excel.
To update the Crowdin Glossaries, you need to clone this repo locally. Open the `.csv` file with an appropriate program, for example, Microsoft Excel.
In the `.csv` file you will find that the English language occupies the first three columns, `Term:English` is the column for the English term, `Description:English` is the column for the English description, and `Part:English` is for the part of speech (e.g., noun, verb etc.) of the term.
Then, each target language has two columns. If you translate to Dothraki, you will be interested in the columns `Term:Dothraki` and `Description:Dothraki`. The column `Term:Dothraki` is for the translation of the term in Dothraki, and the column `Description:Dothraki` is for a description of the term in Dothraki.
> [!TIP] In programs like Microsoft Excel you can hide the columns of the other languages to free up screen real-estate and see the English columns and the target language columns near each other.
> [!TIP] In programs like Microsoft Excel, you can hide the columns of the other languages to free up screen real-estate and see the English columns and the target language columns near each other.
After you have made the changes and saved the file, you will need to make a PR with the proposed changes. After the PR is accepted, you will need to run the GitHub Action workflow to update the Crowdin Glossary. Your glossary changes will not have immediate effects, but they will come.
## How to Promote a Contributor to Proofreader
If you consider that a contributor could become a Crowdin Proofreader, you can give the proofreader role to them in this way:
If you consider that a contributor could become a Crowdin Proofreader, you can give the proofreader role to them this way:
In Crowdin, individuate the `User management` on the left hand side menu.
In Crowdin, individuate the `User management` on the left-hand side menu.
This will open the user management tools, you will be able to see the list of all the users.
Search for the user that will become proofreader. Use the three dots menu on the user row to open a menu and select "Add to team". The proofreader teams have a standard name of `Proof Readers (<language>)`, you can search the team using the language name. Once you have selected the team, use the "ADD" button at the bottom of the page to finalize the thing.
Search for the user that will become a proofreader. Use the three dots menu on the user row to open a menu and select "Add to team". The proofreader teams have a standard name of `Proof Readers (<language>)`, you can search the team using the language name. Once you have selected the team, use the "ADD" button at the bottom of the page to finalize the thing.
The user is now a proofreader.

View File

@@ -18,7 +18,7 @@ freeCodeCamp 是一个包容的社区,我们需要保持这种状态。
We have a single [Code of Conduct](https://code-of-conduct.freecodecamp.org) that governs our entire community. 规则越少,就越容易记住。 你可以在[这里](https://code-of-conduct.freecodecamp.org)阅读这些规则,并把它们记在心里。
> [!NOTE] As a moderator we would add you to one or more teams on GitHub, our community forums & chat servers. If you are missing access on a platform that you would like to moderate, please [reach out to a staff member](FAQ.md#additional-assistance).
> [!NOTE] As a moderator, we would add you to one or more teams on GitHub, our community forums & chat servers. If you are missing access on a platform that you would like to moderate, please [reach out to a staff member](FAQ.md#additional-assistance).
## 管理 GitHub
@@ -77,7 +77,7 @@ Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's reposi
You can close invalid pull requests and reply to them with these [reply templates](moderator-handbook.md#closing-invalid-pull-requests).
If the changes look good, please ensure to leave an approval with a "LGTM" comment. Once a pull request gets at least two approvals (including yours) from the moderators or the dev-team, you can go ahead and merge it.
If the changes look good, please ensure to leave an approval with an "LGTM" comment. Once a pull request gets at least two approvals (including yours) from the moderators or the dev-team, you can go ahead and merge it.
3. **Platform changes**
@@ -91,15 +91,15 @@ Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's reposi
Some PRs are automated dependency updates made via an integration. You should not merge or approve these PRs. One of the dev-team members will take care of reviewing and merging such automated PRs.
#### How to review, merge or close pull requests
#### How to Review, Merge, or Close Pull Requests
##### Assign yourself to a pull request:
##### Assign yourself to a Pull Request:
First of all, when you choose a pull request to review, 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 previously.
##### Ensure the CI checks are passing:
##### Ensure the CI Checks are Passing:
Before merging any pull request, make sure that GitHub is reporting all checks to be passing (green check marks) on the pull requests. If you see any of the checks failing, please investigate and clarify the root cause. Is the change being made breaking our tests? Will the site build correctly if the PR is merged? These checks are critical for the stability of the platform.
@@ -115,7 +115,7 @@ The pull request's changes will be on top, and the main branch's changes will be
If you are uncertain, please ask one of the fellow moderators or the dev-team for assistance.
##### Merging a valid pull request:
##### Merging a Valid Pull Request:
If the pull request looks ready to merge (and doesn't require additional approvals - remember we require at least two), you can go ahead and merge it. Be sure to use the default **"Squash and Merge"** option. This will squash all the pull requests commits down into a single commit, making the Git history much easier to read.
@@ -189,7 +189,7 @@ Again, if you have any problems or questions, make a post with your actions in t
If a user replies in a help thread for the freeCodeCamp curriculum with a solution, remove it and use the **Solution Instead of Help** canned reply (or a similar response in your own words).
If the OP (Original Poster) replies within a freeCodeCamp curriculum help thread with their final solution, blur it and use the **Blurred Spoiler Solution** canned reply.
If the OP (Original Poster) replies within a freeCodeCamp curriculum help thread with their final solution, blur it, and use the **Blurred Spoiler Solution** canned reply.
If a user creates a thread asking for feedback on a solution, move the thread to the feedback subforum and blur the solution, as necessary. If the user is only posting the solution to show it off, then unlist the thread and use the **Solutions Thread** canned reply.
@@ -207,9 +207,9 @@ Please rejoin once you have reached at least 13 years of age.
Thank you for understanding.
```
### Moderating Via Cell-phone
### Moderating Via Cell Phone
Moderating the forum is possible via a cell-phone but you may encounter some usage quirks. This is not an exhaustive list.
Moderating the forum is possible via a cell phone but you may encounter some usage quirks. This is not an exhaustive list.
- When trying to include a "Canned reply" in a response, if the menu doesn't open (after clicking on the gear), click on the text area first then try it again.
- The moderator's 'wrench' is at the bottom of the view-port but if you click it and cannot see the "Select Posts" button because it has scrolled out of view, you may need to try to scroll to it, though sometimes that doesn't work in which case moving to a desktop/laptop monitor may be needed.
@@ -231,7 +231,7 @@ Here's how moderators deal with violations of our [Code of Conduct](https://code
1. **Make sure the user intended to violate the [Code of Conduct](https://code-of-conduct.freecodecamp.org).**
Not all violations of the [Code of Conduct](https://code-of-conduct.freecodecamp.org) were intended as such. A new camper might post a large amount of code for help, unaware that this can be disruptive to conversation. In these cases, you can just ask them to paste their code with services like CodePen or Pastebin.
Not all violations of the [Code of Conduct](https://code-of-conduct.freecodecamp.org) were intended as such. A new camper might post a large amount of code for help, unaware that this can be disruptive to the conversation. In these cases, you can just ask them to paste their code with services like CodePen or Pastebin.
2. **If the camper clearly and intentionally violates the [Code of Conduct](https://code-of-conduct.freecodecamp.org), the moderator will proceed as follows:**
@@ -450,7 +450,7 @@ Also, it's good practice on GitHub to write a brief description of your changes
```markdown
Hey @username
This PR seems to make similar changes as the existing PR <#number>. As such, we are going to close this as duplicate.
This PR seems to make similar changes as the existing PR <#number>. As such, we are going to close this as a duplicate.
If you feel you have additional changes to expand upon this PR, please feel free to push your commits and request this PR be reopened.
@@ -485,7 +485,7 @@ We are closing this pull request. Please suggest links and other details to add
If you think we're wrong in closing this issue, please request for it to be reopened and add further clarification. Thank you and happy coding.
```
### Adding comment about newbie mistakes
### Adding Comment About Newbie Mistakes
```markdown
As a new contributor, we encourage you to read our [contributing guidelines](https://contribute.freecodecamp.org).

View File

@@ -20,7 +20,7 @@ After confirming the above guidelines, please feel free to send an email to `pos
Once you report a vulnerability, we will look into it and ensure that it is not a false positive. If we need to clarify any details, we will get back to you. You can submit separate reports for each issue you find. Please note that we will not be able to respond to any issues that we think are outside the guidelines.
## Platforms & Codebases
## Platforms and Codebases
Here is a list of the platforms and codebases we are accepting reports for:

View File

@@ -1,6 +1,6 @@
If you are facing issue, there is a high chance that the resolution is in this documentation.
If you are facing an issue, there is a high chance that the resolution is in this documentation.
### Issues with installing the recommended prerequisites
## 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).
@@ -12,9 +12,9 @@ If you are on a different OS or are still facing issues, see [getting help](#get
>
> Please avoid creating GitHub issues for problems with the prerequisite technologies. They are out of the scope of this project.
### Issues missing the UI, Fonts, language strings, or build errors.
## Issues with Missing UI, Fonts, Language Strings, or Build Errors
When you build the client, Gatsby will cache the Fonts, language strings and UI. If one of them isn't cached, run the following:
When you build the client, Gatsby will cache the Fonts, language strings, and UI. If one of them isn't cached, run the following:
```console
pnpm run clean
@@ -48,7 +48,7 @@ git clean -ifdX
<img src="https://user-images.githubusercontent.com/1884376/94270515-ca579400-ff5d-11ea-8ff1-152cade31654.gif" alt="How to clean git untracked files" />
</details>
### Issues with API, login, Challenge Submissions, etc.
## 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.
@@ -74,19 +74,19 @@ TCP 0.0.0.0:3000 DESKTOP LISTENING
---
### Issues signing out while navigating
## Issues Signing Out while Navigating
While in development, your session is stored as cookies. Clearing them will sign you out of your development account.
Running `pnpm run seed:certified-user` will log you out, too. It will overwrite the development user in your local database.
### Issue getting 404 when navigating profile page
## Issue Getting 404 when Navigating Profile Page
When you try to navigate to http://localhost:8000/developmentuser to view the profile page, Gatsby takes over serving the client-side pages and hence you will get a 404 page for the user profile when working.
There is a "Preview Custom 404 Page" button, click it to see the profile.
### Issues installing dependencies
## Issues Installing DDependencies
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.

View File

@@ -2,14 +2,14 @@
User tokens are used to identify users to third parties so challenges completed using those services can be saved to a user's account.
## How they are created
## How they are Created
At the moment, the tokens are only used to submit the Relational Database challenges. A token gets created when a signed-in user clicks the "Click here to start the course" or "Click here to start the project" buttons to start one of the Relational Database courses or projects.
## When they get deleted
## When they Get Deleted
A user token will be deleted when a user signs out of freeCodeCamp, resets their progress, deletes their account, or manually deletes the token using the widget on the settings page.
## How they work
## How they Work
Tokens are stored in a `UserToken` collection in the database. Each record has a unique `_id`, which is the token, and a `user_id` that links to the user's account from the `user` collection. The token is encoded using JWT and sent to the client when it's created. That encoded token is then given to third-party services that need it and sent to our API by them when a challenge is completed. When our API gets it, it is decoded so we can identify the user submitting a challenge and save the completed challenge to their `completedChallenges`.

View File

@@ -1,6 +1,6 @@
### Soy nuevo en GitHub y Open Source. ¿Dónde debo empezar?
Lee nuestra ["Guía de como contribuir a Open Source"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). Es una referencia completa para proyectos aptos para principiantes. E incluye muchos consejos de contribución de código abierto.
Lee nuestra ["Guía de como contribuir a Open Source"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). Es una referencia completa para proyectos aptos para principiantes. And it includes a lot of open-source contribution tips.
### ¿Qué necesito saber para contribuir al código base?

View File

@@ -2,11 +2,11 @@
Esta guía te ayudará a comprender nuestra infraestructura y cómo le damos mantenimiento a nuestras plataformas. Si bien esta guía no contiene detalles exhaustivos de todas las operaciones, esta podría utilizarse como referencia para tu comprensión de los sistemas.
Déjanos saber, si tienes algún comentario o consulta, y la aclararemos con mucho gusto.
Let us know if you have feedback or queries and we will be happy to clarify.
# Manual de vuelo: Despliegues de código
## Flight Manual - Code Deployments
Este repositorio se construye, prueba y despliega continuamente para ** separar conjuntos de infraestructura (Servidores, Bases de Datos, CDNs, etc.)**.
This repository is continuously built, tested, and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**.
Esto involucra tres pasos que deben seguirse en secuencia:
@@ -14,7 +14,7 @@ Esto involucra tres pasos que deben seguirse en secuencia:
2. Estos cambios son ejecutados a través de una serie de pruebas automatizadas.
3. Una vez que las pruebas se completan de forma satisfactoria, publicamos los cambios (o los actualizamos si es necesario) para desplegarlos en nuestra infraestructura.
#### Construyendo la base de código - Mapeando las ramas de Git con los despliegues.
### Building the codebase - Mapping Git Branches to Deployments
Normalmente, [`main`](https://github.com/freeCodeCamp/freeCodeCamp/tree/main) (la rama de desarrollo por defecto) se integra diariamente en la rama [`prod-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/prod-staging) y se publica en una infraestructura aislada.
@@ -26,33 +26,33 @@ Una vez que el equipo de desarrolladores [`@freeCodeCamp/dev-team`](https://gith
Esta es la versión final que despliega los cambios a nuestras plataformas de producción en freeCodeCamp.org.
#### Pruebas de cambios - pruebas de integración y aceptación del usuario.
### Testing changes - Integration and User Acceptance Testing
Empleamos varios niveles de pruebas de integración y aceptación para verificar la calidad del código. Todas nuestras pruebas se realizan a través de software como [GitHub Actions CI](https://github.com/freeCodeCamp/freeCodeCamp/actions) y [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp).
Contamos con pruebas unitarias para probar nuestras soluciones a los desafíos, las API del servidor y las interfaces de usuario. Estas nos ayudan a probar la integración entre diferentes componentes.
We have unit tests for testing our challenge solutions, Server APIs, and Client User interfaces. Estas nos ayudan a probar la integración entre diferentes componentes.
> [!NOTE] También estamos en el proceso de redactar pruebas de usuario final que nos ayudarán a replicar escenarios del mundo real, como actualizar un correo electrónico o hacer una llamada a la API o servicios de terceros.
> [!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.
Juntas, estas pruebas ayudan a evitar que los problemas se repitan y garantizan que no introduzcamos un error mientras trabajamos en otro error o en una funcionalidad.
#### Desplegando los cambios: Enviando los cambios a los servidores.
### Deploying Changes - Pushing changes to servers
Hemos configurado un software de entrega continua para publicar los cambios en nuestros servidores de desarrollo y producción.
Una vez que los cambios se envían a las ramas de publicación protegidas, se activa automáticamente un flujo de compilación para la rama. Los flujos de compilación son responsables de construir artefactos y mantenerlos en un almacenamiento en frío para su uso posterior.
El flujo de compilación dispara el flujo de publicación correspondiente si este completa una ejecución exitosa. Los flujos de publicación son responsables de recopilar los artefactos de compilación, moverlos a los servidores y ponerlos en funcionamiento.
El flujo de compilación dispara el flujo de publicación correspondiente si este completa una ejecución exitosa. The release pipelines are responsible for collecting the build artifacts, moving them to the servers, and going live.
Los estados de las compilaciones y publicaciones están [disponibles aquí](#build-test-and-deployment-status).
The statuses of builds and releases are [available here](#build-test-and-deployment-status).
## Ejecutar una compilación, prueba y despliegue
## Trigger a Build, Test, and Deploy
Actualmente, solo los miembros del equipo de desarrolladores pueden enviar cambios a las ramas de producción. Los cambios en las ramas de `production-*` sólo pueden llegar a través de una fusión fast-forward al [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp).
Currently, only members of the developer team can push to the production branches. Los cambios en las ramas de `production-*` sólo pueden llegar a través de una fusión fast-forward al [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp).
> [!NOTE] En los próximos días mejoraríamos este flujo a través de la implementación de pull-requests, para una mejor administración de acceso y transparencia.
> [!NOTE] In the upcoming days, we would improve this flow to be done via pull requests, for better access management and transparency.
### Cargando cambios a las aplicaciones en producción.
### Pushing changes to Staging Applications
1. Configura tus repositorios remotos correctamente.
@@ -102,15 +102,15 @@ Actualmente, solo los miembros del equipo de desarrolladores pueden enviar cambi
git push upstream
```
> [!NOTE] No podrás forzar un push y si has reescrito el historial de alguna manera, estos comandos arrojarán errores.
> [!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.
>
> Si esto ocurre, es posible que hayas hecho algo incorrectamente y deberías comenzar de nuevo.
Los pasos anteriores activarán automáticamente un flujo de compilación para la rama `prod-staging`. Una vez que se completa la compilación, los artefactos se guardan como archivos `.zip` en un almacenamiento en frío para ser recuperados y usados más adelante.
El flujo de publicación se activa automáticamente cuando hay un nuevo artefacto disponible en el flujo de compilación conectado. Para las plataformas de staging, este proceso no implica aprobación manual y los artefactos se envían a los servidores de API y CDN Cliente.
El flujo de publicación se activa automáticamente cuando hay un nuevo artefacto disponible en el flujo de compilación conectado. For staging platforms, this process does not involve manual approval, and the artifacts are pushed to the Client CDN and API servers.
### Publicando cambios a las aplicaciones en producción.
### Pushing changes to Production Applications
El proceso es prácticamente el mismo que el de las plataformas de staging, con algunas comprobaciones adicionales. Esto es solo para asegurarnos de que no rompemos nada en freeCodeCamp.org, el cual puede tener a cientos de usuarios usándolo en cualquier momento.
@@ -134,7 +134,7 @@ El proceso es prácticamente el mismo que el de las plataformas de staging, con
git push upstream
```
> [!NOTE] No podrás forzar un push y si has reescrito el historial de alguna manera, estos comandos arrojarán errores.
> [!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.
>
> Si esto ocurre, es posible que hayas hecho algo incorrectamente y deberías comenzar de nuevo.
@@ -142,7 +142,7 @@ Los pasos anteriores activarán automáticamente un flujo de compilación para l
**Pasos Adicionales para el Staff Action**
Una vez que se activa una ejecución de publicación, los miembros del equipo de desarrollado principal recibirán un correo electrónico automatizado de intervención manual. Pueden _aprobar_ o _rechazar_ la publicación.
Once a release run is triggered, members of the developer staff team will receive an automated manual intervention email. Pueden _aprobar_ o _rechazar_ la publicación.
Si los cambios funcionan y se han probado en la plataforma de staging, entonces se pueden aprobar. La aprobación debe darse dentro de las 4 horas posteriores a la activación de la publicación antes de sea rechazada automáticamente. Un miembro del personal puede volver a iniciar la ejecución de la publicación de manera manual para publicaciones que fueron rechazados o esperar el siguiente ciclo de publicación.
@@ -154,7 +154,7 @@ Para uso del personal:
Una vez que uno de los miembros del personal apruebe una publicación, el flujo enviará los cambios a los servidores de API y CDN de producción de freeCodeCamp.org.
## Estado de la compilación, pruebas y despliegue
## Build, Test and Deployment Status
Aquí está el estado actual de las pruebas, compilación y despliegue del código base.
@@ -165,17 +165,17 @@ Aquí está el estado actual de las pruebas, compilación y despliegue del códi
| [`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) | [![Pruebas de 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, próximamente) | - | - | - |
## Acceso anticipado y pruebas beta
## Early Access and Beta Testing
Te invitamos a probar estas versiones en un modo **"prueba beta pública"** y obtener acceso anticipado a las próximas funciones de las plataformas. A veces, estas funcionalidades/cambios se denominan **next, beta, staging,** etc. indistintamente.
Tus contribuciones a través de comentarios y reporte de errores nos ayudarán a hacer que las plataformas de producción en `freeCodeCamp.org` sean más **resistentes**, **consistentes** y **estables** para todos.
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.
Te agradecemos por reportar los errores que encuentres y ayudar a mejorar freeCodeCamp.org. ¡Eres genial!
### Identificando la próxima versión de las plataformas
### Identifying the Upcoming Version of the Platforms
Actualmente una versión de prueba beta pública está disponible en:
Currently, a public beta testing version is available at:
| Aplicación | Idioma | URL |
|:---------- |:------- |:---------------------------------------- |
@@ -189,27 +189,27 @@ Actualmente una versión de prueba beta pública está disponible en:
> [!NOTE] El nombre de dominio es diferente a **`freeCodeCamp.org`**. Esto es intencional para evitar la indexación de los motores de búsqueda y evitar confusiones para los usuarios habituales de la plataforma.
>
> La lista anterior no es exhaustiva de todas las aplicaciones que proporcionamos. Además, no todas variantes de idiomas se despliegan al mismo tiempo en staging para conservar recursos.
> 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.
### Identificando la versión actual de las plataformas
### Identifying the Current Version of the Platforms
**La versión actual de la plataforma siempre está disponible en [`freeCodeCamp.org`](https://www.freecodecamp.org).**
El equipo de desarrollo fusiona los cambios de la rama `prod-staging` a `prod-current` cuando publican los cambios. El commit más reciente debe ser lo que ves en vivo en el sitio.
Puedes identificar la versión exacta desplegada visitando los registros de compilación y despliegue disponibles en la sección de estado. Adicionalmente, también puedes contactarnos en la [sala de chat de contribuyentes](https://discord.gg/PRyKn3Vbay) para obtener una confirmación.
Puedes identificar la versión exacta desplegada visitando los registros de compilación y despliegue disponibles en la sección de estado. Alternatively, you can also ping us in the [contributors chat room](https://discord.gg/PRyKn3Vbay) for a confirmation.
### Limitaciones Conocidas
### Known Limitations
Existen algunas limitaciones y problemas conocidos al utilizar la versión beta de la plataforma.
- #### Todos los datos / progreso personal en estas plataformas beta NO se guardarán ni se transferirán a producción.
- #### All data / personal progress on these beta platforms will NOT be saved or carried over to production
**Los usuarios de la versión beta tendrán una cuenta separada a la de producción.** La versión beta usa una base de datos físicamente separada de la de producción. Esto nos da la capacidad de prevenir cualquier pérdida accidental de datos o modificaciones. El equipo de desarrollo puede purgar la base de datos en esta versión beta según sea necesario.
**Los usuarios de la versión beta tendrán una cuenta separada a la de producción.** La versión beta usa una base de datos físicamente separada de la de producción. Esto nos da la capacidad de prevenir cualquier pérdida accidental de datos o modificaciones. The dev-team may purge the database on this beta version as needed.
- #### No hay garantías sobre el tiempo de disponibilidad y confiabilidad de las plataformas beta.
- #### There are no guarantees on the uptime and reliability of the beta platforms
Se espera que el despliegue sea frecuente y en iteraciones rápidas, a veces varias veces al día. Como resultado, en ocasiones habrá cierto tiempo de inactividad inesperado o alguna funcionalidad con problemas en la versión beta.
Se espera que el despliegue sea frecuente y en iteraciones rápidas, a veces varias veces al día. As a result, there will be unexpected downtime at times or broken functionality on the beta version.
- #### No envíes a los usuarios habituales a este sitio como una medida para confirmar una solución
@@ -219,13 +219,13 @@ Existen algunas limitaciones y problemas conocidos al utilizar la versión beta
Usamos un entorno de prueba para freeCodeCamp.dev en Auth0 y por lo tanto, no tenemos la capacidad de establecer un dominio personalizado. Esto hace que todas las redirecciones de peticiones y la página de inicio de sesión aparezcan en un dominio predeterminado como: `https://freecodecamp-dev.auth0.com/`. Esto no afecta la funcionalidad y es lo más cercano a la producción que podemos conseguir.
## Reportando problemas y dejando retroalimentación
## Reporting issues and leaving feedback
Por favor abre un nuevo reporte (issue) para discusiones e informes de errores.
Puedes enviar un correo electrónico a `dev[at]freecodecamp.org` si tienes alguna consulta. Como siempre, todas las vulnerabilidades de seguridad deben notificarse a `security[at]freecodecamp.org` en lugar del registro público o el foro.
# Manual de vuelo: Mantenimiento del servidor
## Flight Manual - Server Maintenance
> [!WARNING]
>
@@ -236,9 +236,9 @@ Como miembro del equipo interno, es posible que se te haya dado acceso a nuestro
Aquí hay algunos comandos útiles que puedes usar para trabajar en las máquinas virtuales (MV), por ejemplo, realizar actualizaciones de mantenimiento o realizar tareas de limpieza general.
## Obtener una lista de las Máquinas Virtuales
## Get a list of the VMs
> [!NOTE] Aunque es posible que ya tengas acceso SSH a las máquinas virtuales, esto solamente no te permitirá enumerar las máquinas virtuales a menos que también se te conceda acceso a los portales en la nube.
> [!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"
```
## Ejecutar nuevos recursos
## Spin New Resources
Estamos trabajando para crear nuestra configuración de "laC", y mientras esta en proceso, puedes usar el portal de Azure o Azure CLI para poner en marcha nuevas maquinas virtuales y otros recursos.
> [!TIP] Independientemente de tu elección de ejecución de recursos, tenemos algunos [ archivos de configuración de inicio útiles en la nube](https://github.com/freeCodeCamp/infra/tree/main/cloud-init) para ayudarte a realizar parte del aprovisionamiento básico, como instalar docker o agregar claves SSH, etc.
## Mantener las VMs actualizadas
## Keep VMs Updated
Debes mantener las máquinas virtuales actualizadas mediante la realización de actualizaciones. Esto asegurará que la máquina virtual se ha parcheado con las correcciones de seguridad más recientes.
Debes mantener las máquinas virtuales actualizadas mediante la realización de actualizaciones. This will ensure that the virtual machine is patched with the latest security fixes.
> [!WARNING] Antes de ejecutar estos comandos:
>
> - Asegúrate de que la máquina virtual ha sido provisionada completamente y no hay pasos post-instalación ejecutandose.
> - Make sure that the VM has been provisioned completely and that there are no post-install steps running.
> - Si estás actualizando paquetes en una máquina virtual que ya está sirviendo una aplicación, asegúrate de que la aplicación se ha detenido / guardado. Las actualizaciones de paquetes causarán que el ancho de banda de la red, la memoria y/o CPU tengan picos que pueden ocasionar interrupciones en aplicaciones en ejecución.
Actualizar la información de paquetes
@@ -319,7 +319,7 @@ Limpieza de paquetes no utilizados
sudo apt autoremove -y
```
## Trabajar en Servidores Web (Proxy)
## Work on Web Servers (Proxy)
Estamos ejecutando instancias de balanceo de cargas (Azure Load Balancer) para nuestros servidores web. Estos servidores ejecutan NGINX como proxy inverso, enrutando hacia freeCodeCamp.org el tráfico de varias aplicaciones que se ejecutan en sus propias infraestructuras.
@@ -370,7 +370,7 @@ Aprovisionamiento de máquinas virtuales con el código
Agrega/actualiza las direcciones IP fuente/origen de la aplicación.
3. Configurar redes y cortafuegos.
3. Set up networking and firewalls.
Configura los firewalls de Azure y `ufw` según sea necesario para las direcciones de origen de entrada.
@@ -378,7 +378,7 @@ Aprovisionamiento de máquinas virtuales con el código
Configura y agrega reglas al balanceador de carga si es necesario. Es posible que también necesites agregar las MVs al grupo de backend del balanceador de carga si es necesario.
### Registro de Eventos y Monitoreo
### Registro de eventos y monitoreo
1. Compruebe el estado del servicio NGINX utilizando el siguiente comando:
@@ -390,7 +390,7 @@ Aprovisionamiento de máquinas virtuales con el código
NGINX Amplify: [https://amplify.nginx.com]('https://amplify.nginx.com'), nuestro panel de control básico actual. Estamos trabajando en métricas más granulares para una mejor visibilidad de los datos
### Actualización de las Instancias (Mantenimiento)
### Actualización de las instancias (mantenimiento)
Los cambios en la configuración de nuestras instancias NGINX son mantenidos en GitHub, y se deben desplegar en cada instancia de la siguiente manera:
@@ -415,7 +415,7 @@ nginx -t
nginx -s reload
```
## Trabajar en instancias del API
## Work on API Instances
1. Instala las herramientas de compilación para archivos binarios de Node (`node-gyp`) etc.
@@ -423,7 +423,7 @@ nginx -s reload
sudo apt install build-essential
```
### Primera Instalación
### Primera instalación
Aprovisionamiento de MVs con el código
@@ -435,7 +435,7 @@ Aprovisionamiento de MVs con el código
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,11 +482,11 @@ pnpm pm2 monit
### Actualización de las instancias (mantenimiento)
Los cambios en el código deben desplegarse en las instancias de la API cada tanto. Esto puede ser una actualización continua o una actualización manual. La última es esencial al cambiar dependencias o al agregar variables de entorno.
Los cambios en el código deben desplegarse en las instancias de la API cada tanto. Esto puede ser una actualización continua o una actualización manual. The latter is essential when changing dependencies or adding environment variables.
> [!ATTENTIÓN] Los flujos automáticos no están manejando actualizaciones de dependencias en el momento. Necesitamos realizar una actualización manual antes de que se ejecute cualquier flujo de despliegue.
#### 1. Actualizaciones Manuales: Utilizadas para actualizar dependencias, variables de entorno.
#### 1. Manual Updates - Used for updating dependencies, env variables.
1. Stop all instances
@@ -512,13 +512,13 @@ pnpm prebuild && pnpm build:curriculum && pnpm build:server
pnpm start:server && pnpm pm2 logs
```
#### 2. Actualizaciones continuas: Utilizadas para cambios lógicos en el código.
#### 2. Rolling updates - Used for logical changes to code.
```console
pnpm reload:server && pnpm pm2 logs
```
> [!NOTE] Estamos manejando actualizaciones continuas de código, lógica, mediante flujos (pipelines). No debes tener que ejecutar estos comandos. Estos están aquí para documentación.
> [!NOTE] We are handling rolling updates to code and logic via pipelines. No debes tener que ejecutar estos comandos. Estos están aquí para documentación.
#### 3. Updating Node
@@ -530,7 +530,7 @@ pnpm reload:server && pnpm pm2 logs
pnpm pm2 update
```
## Trabajar en instancias de cliente
## Work on Client Instances
1. Install build tools for node binaries (`node-gyp`) etc.
@@ -538,7 +538,7 @@ pnpm pm2 update
sudo apt install build-essential
```
### Primera instalación
### Primera Instala
Aprovisionamiento de MVs con el código
@@ -592,7 +592,7 @@ Los cambios en el código deben desplegarse en las instancias del API cada ciert
> [!ATTENTION] Los flujos automáticos no están manejando actualizaciones de dependencias en el momento. Necesitamos realizar una actualización manual antes de que se ejecute cualquier flujo de despliegue.
#### 1. Manual Updates - Used for updating dependencies, env variables.
#### 1. Actualizaciones Manuales: Utilizadas para actualizar dependencias, variables de entorno.
1. Stop all instances
@@ -608,7 +608,7 @@ Los cambios en el código deben desplegarse en las instancias del API cada ciert
pm2 start all --update-env && pm2 logs
```
#### 2. Rolling updates - Used for logical changes to code.
#### 2. Actualizaciones continuas: Utilizadas para cambios lógicos en el código.
```console
pm2 reload all --update-env && pm2 logs
@@ -616,13 +616,13 @@ pm2 reload all --update-env && pm2 logs
> [!NOTE] Estamos manejando actualizaciones continuas de código, lógica, a través de flujos. No necesitarás aplicar estos comandos. Estos están por la documentación.
## Trabaja en los servidores de Chat
## Work on Chat Servers
Nuestros servidores de chat están disponibles con una configuración HA [recomendada en la documentación de Rocket.Chat](https://docs.rocket.chat/installation/docker-containers/high-availability-install). El archivo `docker-compose` para esto está [disponible aquí](https://github.com/freeCodeCamp/chat-config).
Aprovisionamos instancias NGINX redundantes que a su vez tienen equilibrio de carga (Azure Load Balancer) frente al clúster Rocket.Chat. El archivo de configuración de NGINX está [disponible aquí](https://github.com/freeCodeCamp/chat-nginx-config).
### Primera Instala
### First Install
Aprovisionamiento de MVs con el código
@@ -669,7 +669,7 @@ Aprovisionamiento de MVs con el código
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.
@@ -695,7 +695,7 @@ Aprovisionamiento de MVs con el código
docker-compose up -d
```
### Registro de eventos y monitoreo
### Logging and Monitoring
1. Check status for NGINX service using the below command:
@@ -709,7 +709,7 @@ Aprovisionamiento de MVs con el código
docker ps
```
### Actualización de las instancias (mantenimiento)
### Updating Instances (Maintenance)
**Clúster NGINX:**
@@ -790,9 +790,9 @@ Los cambios de configuración a nuestras instancias NGINX se mantienen en GitHub
Select yes (y) to remove everything that is not in use. This will remove all stopped containers, all networks and volumes not used by at least one container, and all dangling images and build caches.
## Trabajar en las herramientas de los colaboradores
## Work on Contributor Tools
### Implementar actualizaciones
### Deploy Updates
ssh en la máquina virtual (alojada en Digital Ocean).
@@ -804,7 +804,7 @@ pnpm run build
pm2 restart contribute-app
```
## Actualizar la versión de Node.js en máquinas virtuales
## Updating Node.js Versions on VMs
Lista las versiones instaladas de node y npm
@@ -828,7 +828,7 @@ Verifica los paquetes instalados
npm ls -g --depth=0
```
Alias la versión `default` de Node.js a la LTS actual (fijada a la última versión mayor)
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 <version>
```
> [!ATTENTION] Para las aplicaciones cliente, el script de shell no se puede resucitar entre las versiones de Node.js con `pm2 resurrect`. En su lugar, despliega procesos desde cero. Esto será mejor cuando pasemos a una configuración basada en Docker.
> [!ATTENTION] Para las aplicaciones cliente, el script de shell no se puede resucitar entre las versiones de Node.js con `pm2 resurrect`. En su lugar, despliega procesos desde cero. This should become nicer when we move to a docker-based setup.
>
> Si utilizas PM2 para procesos, también deberás abrir las aplicaciones y guardar la lista de procesos para la recuperación automática en los reinicios.
@@ -874,19 +874,19 @@ pm2 save
pm2 logs
```
## Instalar y actualizar Agentes de Pipeline Azure
## Installing and Updating Azure Pipeline Agents
Consulta: https://docs.microsoft.com/es-es/azure/devops/pipelines/agents/v2-linux?view=azure-devops y sigue las instrucciones para detener, eliminar y reinstalar agentes. En términos generales, puedes seguir los pasos que se enumeran aquí.
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. En términos generales, puedes seguir los pasos que se enumeran aquí.
Necesitarás una PAT, que puedes obtener desde aquí: https://dev.azure.com/freeCodeCamp-org/_usersSettings/tokens
### Instalación de agentes en objetivos de despliegue
### Installing Agents on Deployment targets
Navega a [Azure Devops](https://dev.azure.com/freeCodeCamp-org) y registra el agente desde cero en el requisito [deployment groups](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_machinegroup).
> [!NOTE] Debes ejecutar los scripts en el directorio de inicio, y asegurarte de que no existe ningún otro directorio `azagent`.
### Actualizando agentes
### Updating Agents
Actualmente actualizar los agentes requiere que sean eliminados y reconfigurados. Esto es necesario para que recojan correctamente los valores `PATH` y otras variables de entorno del sistema. Necesitamos hacer esto, por ejemplo, para actualizar Node.js en nuestras MV objetivo de implemetación.
@@ -924,7 +924,7 @@ Actualmente actualizar los agentes requiere que sean eliminados y reconfigurados
Una vez que hayas completado los pasos de arriba, puedes repetir los mismos pasos que para instalar el agente.
# Manual de piloto - Correo masivo
## Flight Manual - Email Blast
Utilizamos [una herramienta CLI](https://github.com/freecodecamp/sendgrid-email-blast) para enviar el boletín semanal. Para actualizar y comenzar el proceso:
@@ -955,9 +955,9 @@ Utilizamos [una herramienta CLI](https://github.com/freecodecamp/sendgrid-email-
7. When the email blast is complete, verify that no emails have failed before destroying the droplets.
# Manual de vuelo - Agregando instancias de noticias para nuevos idiomas
## Flight Manual - Adding news instances for new languages
### Cambios de tema
### Theme Changes
Utilizamos un [tema](https://github.com/freeCodeCamp/news-theme) personalizado para nuestra publicación de noticias. Los siguientes cambios en el tema permiten añadir nuevos idiomas.
@@ -968,6 +968,6 @@ Utilizamos un [tema](https://github.com/freeCodeCamp/news-theme) personalizado p
5. In [`partials/i18n.hbs`](https://github.com/freeCodeCamp/news-theme/blob/main/partials/i18n.hbs), add scripts for the newly created config files.
6. Add the related language `day.js` script from [cdnjs](https://cdnjs.com/libraries/dayjs/1.10.4) to the [freeCodeCamp CDN](https://github.com/freeCodeCamp/cdn/tree/main/build/news-assets/dayjs/1.10.4/locale)
### Cambios en el Dashboard de Ghost
### Ghost Dashboard Changes
Actualice los recursos de la publicación yendo al panel de Ghost > ajustes > generales y subiendo el icono [de las publicaciones](https://github.com/freeCodeCamp/design-style-guide/blob/master/assets/fcc-puck-500-favicon.png), [logo](https://github.com/freeCodeCamp/design-style-guide/blob/master/downloads/fcc_primary_large.png)y [portada](https://github.com/freeCodeCamp/design-style-guide/blob/master/assets/fcc_ghost_publication_cover.png).

View File

@@ -4,23 +4,23 @@ Al realizar cambios en JavaScript, CSS o HTML que podrían cambiar la funcionali
Para aprender como escribir pruebas de Cypress, o especificaciones, observa la [documentación](https://docs.cypress.io/guides/getting-started/writing-your-first-test.html) oficial de Cypress.
## Donde agregar una prueba
## Where to Add a Test
- Las pruebas de Cypress están en el directorio `./cypress`.
- Las pruebas de Cypress para un módulo curricular están en el directorio curricular correspondiente, por ejemplo: `cypress/integration/learn/responsive-web-design/basic-css/index.js`.
## Como ejecutar pruebas
## How to Run Tests
> [!NOTE] Si utilizas GitPod, por favor mira [Cypress-GitPod Setup](how-to-add-cypress-tests.md#cypress-gitpod-setup)
### 1. Asegúrate de que MongoDB y la aplicación de cliente se estén ejecutando
### 1. Ensure that MongoDB and Client Applications are Running
- [Inicia MongoDB y propaga la base de Datos](how-to-setup-freecodecamp-locally.md#step-3-start-mongodb-and-seed-the-database)
- [Inicia la aplicación de cliente de freeCodeCamp y el servidor API](how-to-setup-freecodecamp-locally.md#step-4-start-the-freecodecamp-client-application-and-api-server)
### 2. Ejecuta las pruebas de Cypress
### 2. Run the Cypress Tests
Para ejecutar pruebas en las compilaciones de producción, reemplaza `dev` con `prd` abajo.
@@ -39,7 +39,7 @@ Para ejecutar pruebas en las compilaciones de producción, reemplaza `dev` con `
For example:
```console
pnpm run cypress -- run --spec=cypress/e2e/default/landing.js
pnpm run cypress -- run --spec=cypress/e2e/default/landing.ts
```
- Para crear una compilación de desarrollo, inicia el servidor de desarrollo y ejecuta todas las pruebas de cypress existentes de extremo a extremo:

View File

@@ -7,11 +7,11 @@
## Introducción
Algunos flujos de trabajo de correo electrónico, como actualizar el correo electrónico de un usuario, requiere del servidor API en back-end para enviar correos salientes. MailHog es una alternativa al uso de un proveedor de servicios de correo electrónico para enviar correos electrónicos reales. Es una herramienta de desarrollo para pruebas de correo electrónico que capturará los mensajes de correo electrónico enviados por tu instancia de freeCodeCamp.
Some email workflows, like updating a user's email, require the back-end api-server to send outgoing emails. MailHog es una alternativa al uso de un proveedor de servicios de correo electrónico para enviar correos electrónicos reales. Es una herramienta de desarrollo para pruebas de correo electrónico que capturará los mensajes de correo electrónico enviados por tu instancia de freeCodeCamp.
## Instalando MailHog
MailHog puede ser instalado en macOS, Windows y Linux o usado via Docker
MailHog can be installed on macOS, Windows, and Linux or used via Docker
<details><summary>Instalando MailHog con Docker</summary>

View File

@@ -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 = {
## Habilitar Videos Localizados
Para los desafìos de video, debe cambiar algunas cosas. Primero agregue la nueva configuración regional a la consulta de GraphQL en el archivo `client/src/templates/Challenges/video/Show.tsx`. Por ejemplo, agregando a Dothraki para la consulta:
Para los desafìos de video, debe cambiar algunas cosas. First, add the new locale to the GraphQL query in the `client/src/templates/Challenges/video/Show.tsx` file. Por ejemplo, agregando a Dothraki para la consulta:
```tsx
query VideoChallenge($slug: String!) {
@@ -256,7 +256,7 @@ export interface VideoLocaleIds {
}
```
Y finalmente actualice el esquema de desafío en `curriculum/schema/challenge/challengeSchema.js`.
And finally, update the challenge schema in `curriculum/schema/challengeSchema.js`.
```js
videoLocaleIds: Joi.when('challengeType', {

View File

@@ -1,4 +1,4 @@
# Cómo ayudar con los desafíos de vídeo
# How to Help with Video Challenges
Los retos en vídeo son un nuevo tipo de desafío en el currículo de freeCodeCamp.
@@ -54,18 +54,18 @@ Más respuestas
El número para la respuesta correcta va aquí.
````
## Creando preguntas para los desafíos de video
## Creating Questions for Video Challenges
### Accede a los archivos markdown del desafío de video
### Access the Video Challenge Markdown Files
Puedes encontrar los archivos markdown de los desafíos de video en las siguientes ubicaciones del currículum:
You can find the markdown files for video challenges at the following locations in the curriculum:
- [Curso de análisis de datos con Python](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course)
- [Curso de TensorFlow 2.0](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/11-machine-learning-with-python/tensorflow)
- [Curso de Numpy](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/08-data-analysis-with-python/numpy)
- [Curso de como funcionan las redes neuronales](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work)
- [Data Analysis with Python Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course)
- [TensorFlow 2.0 Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/11-machine-learning-with-python/tensorflow)
- [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/08-data-analysis-with-python/numpy)
- [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work)
Elige un archivo markdown de las opciones anteriores.
Pick a challenge markdown file from the options above.
### Skim through the video associated with the challenge and create a multiple-choice question
@@ -87,9 +87,9 @@ 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.
### Añade la pregunta al archivo markdown
### Add the Question to the Markdown File
Puedes añadir la pregunta localmente o utilizando la interfaz de GitHub. Para añadir la pregunta localmente, necesitas [configurar freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md). También puede encontrar el archivo en GitHub y hacer clic en el botón Editar para añadir la pregunta directamente en su navegador.
You can add the question locally or using the GitHub interface. Para añadir la pregunta localmente, necesitas [configurar freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md). También puede encontrar el archivo en GitHub y hacer clic en el botón Editar para añadir la pregunta directamente en su navegador.
Si aún no se ha agregado una pregunta a un desafío de video en particular, tendrá la siguiente pregunta predeterminada:
@@ -198,6 +198,6 @@ print(height/3)
Para más ejemplos, puede ver los archivos de markdown para el siguiente curso de video. Todos los desafíos ya tienen preguntas: [Curso de Python para todos](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody)
## Abrir una pull request
## Open a Pull Request
Después de crear una o más preguntas, puedes enviar los cambios a una nueva rama y [abrir una pull request](how-to-open-a-pull-request.md).

View File

@@ -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.
## Prepara un buen título para tu 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:
@@ -93,7 +93,7 @@ Some examples of good PR titles would be:
- Si tu PR afecta el comportamiento de una página, debe ir acompañada de la correspondiente [pruebas de integración de Cypress](how-to-add-cypress-tests.md).
## Comentarios sobre pull requests
## Feedback on Pull Requests
> :tada: Enhorabuena por hacer una PR y muchas gracias por tomarse el tiempo para contribuir.
@@ -103,13 +103,13 @@ And as always, feel free to ask questions on the ['Contributors' category on our
> [!TIP] Si vas a contribuir con más PRs, te recomendamos que leas las directrices ["haciendo cambios y sincronizando"](how-to-setup-freecodecamp-locally.md#making-changes-locally) para evitar la necesidad de borrar tu bifurcación.
## Conflicto en un 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.
### Para arreglos de errores y características habituales
### 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 <pr-branch>
```
### Para los próximos planes de estudios y características
### For Upcoming Curriculum and Features
When you are working on features for our upcoming curriculum `next-*` branches, you have to do a cherry pick:

View File

@@ -40,7 +40,7 @@ No se requieren acciones adicionales una vez que el archivo ha sido revisado.
> [!NOTE] Aprobar una cadena en la vista de revisión la marcará como completa y se descargará en nuestra próxima extracción de Crowdin a GitHub.
## Llegar hacer un revisor
## Becoming a Proofreader
Si tiene alguna pregunta o le interesa colaborar en el equipo de revisión, sientase libre de contactarnos en nuestra [sala de chat de contribuidores](https://discord.gg/PRyKn3Vbay). Generalmente, le concederemos acceso a la corrección si ha estado contribuyendo a freeCodeCamp durante un tiempo.
@@ -48,7 +48,7 @@ Nuestro equipo de personal y de moderadores de la comunidad buscan constantement
> [!NOTE] Crowdin te permite aprobar tus propias traducciones. Sin embargo, en general suele ser mejor permitir que otro corrector revise tus traducciones propuestas como medida adicional para asegurarse que no hayan errores.
## Creando un canal en Chat para un idioma mundial
## Creating a Channel on Chat for a World Language
Mayormente, te recomendamos que utilices la sala de chat de [contribuidores](https://discord.gg/PRyKn3Vbay) para toda la correspondencia. Sin embargo, si el equipo de traductores voluntarios crece para un idioma determinado, podemos considerar la creación de un canal de escape adicional para el idioma.

View File

@@ -1,6 +1,6 @@
Sigue estas directrices para configurar un entorno de desarrollo para freeCodeCamp. Esto es altamente recomendable si desea contribuir regularmente.
## Elige entre Gitpod o tu propia máquina (configuración local)
## Choose between Gitpod or your Own Machine (local setup)
Si deseas hacer una contribución puntual, debes utilizar Gitpod para realizar cambios. La configuración de Gitpod lanza un entorno listo para codificar en pocos minutos en tu navegador web. Para contribuir a largo plazo, te recomendamos que instales freeCodeCamp en tu máquina local.
@@ -17,7 +17,7 @@ Estos son algunos pros y contras que deberían ayudarte a decidir cuál es la me
> [!ATTENTION] **Nota:** Si utilizas Windows 10 u 11, tendrás que utilizar WSL2. Puedes seguir [esta guía](how-to-setup-wsl.md) para configurar WSL2. No puedes utilizar Command Prompt, Git Bash o PowerShell para ejecutar freeCodeCamp de forma nativa dentro de windows.
### Cómo preparar un espacio de trabajo Gitpod
### How to Prepare a Gitpod Workspace
Hemos automatizado el proceso de instalación de todas las dependencias & herramientas que necesitarás. Con GitPod obtienes un entorno gratuito listo para codificar en pocos minutos, y es útil si no tienes acceso a ordenador o quieres hacer cambios puntuales.
@@ -38,7 +38,7 @@ Hay varias formas de lanzar un espacio de trabajo GitPod:
Spanish Eso es todo, ahora puedes saltar a la sección 'sincronizar desde el padre' después de haber lanzado un espacio de trabajo GitPod. La mayor parte de esta guía se aplica a los espacios de trabajo GitPod, pero ten en cuenta [cómo funcionan las URLs & Puertos dentro de un GitPod](https://www.gitpod.io/docs/configure/workspaces/ports).
### Cómo preparar tu máquina local
### How to Prepare your Local Machine
A continuación se indican los requisitos mínimos del sistema para ejecutar freeCodeCamp localmente:
@@ -87,7 +87,7 @@ Una vez instalados los requisitos previos, debe preparar su entorno de desarroll
> [!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
<img src="https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/main/docs/images/github/how-to-fork-freeCodeCamp.gif" alt="How to fork freeCodeCamp on GitHub" />
</details>
## 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
#### Paso 1: Configurar el archivo de variable de entorno
#### 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.
#### Paso 2: Instalar dependencias
#### 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
```
#### Paso 3: Iniciar MongoDB y "sembrar" la base de datos
#### 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
```
#### Paso 4: Iniciar la aplicación del cliente freeCodeCamp y el servidor de la API
#### 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 <http://localhost:3000/explorer> 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.

View File

@@ -1,12 +1,12 @@
Siga esta guía para establecer la aplicación móvil FreeCodeCamp en su sistema. Es altamente recomentado si se quiere contribuir regularmente.
Algunos de los flujos de trabajo de contribución como corregir errores en el código base necesitan que ejecutes la app de freeCodeCamp localmente en tu ordenador.
Some of the contribution workflows like fixing bugs in the codebase need you to run the freeCodeCamp app locally.
### Cómo preparar tu máquina local
### How to Prepare your Local Machine
Empezar instalando el software requerido previamente para su sistema operativo.
#### Requisitos previos:
#### Prerequisites
| Requisito | Versión | Notas |
| ------------------------------- | ------- | ---------------------------------------- |
@@ -30,9 +30,9 @@ Una vez que estén instalados los requisitos previos, hay que preparar el entorn
1. Instalar [Git](https://git-scm.com/) u otro cliente Git, si todavía no hay ningumo. Acualizar a la versión más reciente. La que viene con el sistema operativo puede estar desactualizada.
2. Configurar [Android Studio](https://developer.android.com/studio) y [Android Emulators](https://developer.android.com/studio/run/managing-avds) con la última versión liberada de Android. Recomendamos usar Pixel 3a XL y Nexus One(para emular pantallas más pequeñas).
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. Recomendamos usar Pixel 3a XL y Nexus One(para emular pantallas más pequeñas).
3. (Opcional para MacOS) Configurar Xcode e iOS Simulator con la última versión liberada de iOS.
3. (Optional for MacOS) Set up Xcode and iOS Simulator with the latest released iOS version.
4. (Opcional pero recomendado) [Configurar una clave SSH](https://help.github.com/articles/generating-an-ssh-key/) para GitHub.
@@ -40,7 +40,7 @@ Una vez que estén instalados los requisitos previos, hay que preparar el entorn
Recomendamos utilizar [Visual Studio Code](https://code.visualstudio.com/) o Android Studio. También recomendamos instalar las [extensiones oficiales](https://docs.flutter.dev/get-started/editor?tab=vscode).
## Fork del repositorio en GitHub
## Fork the Repository on GitHub
[Fork](https://help.github.com/articles/about-forks/) es un paso donde consigues tu propia copia del repositorio (conocido como _repo_) en GitHub.
@@ -58,9 +58,9 @@ Esto es esencial, te permite trabajar en tu propia copia de la app móvil de fre
3. Después de haber hecho fork al repositorio, serás llevado a tu copia del repositorio en `https://github. om/NOMBRE_DE_USUARIO/mobile` (`OMBRE_DE_USUARIO` sería reemplazado con tu nombre de usuario de GitHub.)
## Clonar tu fork desde GitHub
## Clone your Fork from GitHub
"[Clonar](https://help.github.com/articles/cloning-a-repository/)" es donde tú "**descargas**" una copia de un repositorio desde una localización "`remota`" que es propiedad tuya o de alguien más. En tu caso, esta localización remota es tu "`fork`" del repositorio de freeCodeCamp que debería estar disponible en `https://github.com/TU_NOMBRE_DE_USUARIO/mobile`. (`TU_NOMBRE_DE_USUARIO` debería ser reemplazado con tu nombre de usuario de GitHub.)
"[Clonar](https://help.github.com/articles/cloning-a-repository/)" es donde tú "**descargas**" una copia de un repositorio desde una localización "`remota`" que es propiedad tuya o de alguien más. 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`. (`TU_NOMBRE_DE_USUARIO` debería ser reemplazado con tu nombre de usuario de GitHub.)
Ejecuta estos comandos en tu máquina local:
@@ -78,11 +78,11 @@ Esto descargará el repositorio entero de freeCodeCamp móvil en tu directorio d
Nota: `--depth=1` crea un clon superficial de tu fork con solo la historia/commit más reciente.
## Configurar sincronización desde el padre
## Set up Syncing from Parent
Ahora que has descargado una copia de tu fork, necesitarás configurar un `upstream` remoto en el repositorio padre.
[Como se mencionó anteriormente](#fork-the-repository-on-github), el repositorio principal es referido repositorio `upstream`. Tu fork conocido como el repositorio de `origen`.
[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.
Necesitas una referencia de tu clon local al repositorio `upstream` además del repositorio `origin`. Esto es para que puedas sincronizar los cambios desde el repositorio principal sin el requisito de hacer fork y clonar repetidamente.
@@ -113,7 +113,7 @@ Necesitas una referencia de tu clon local al repositorio `upstream` además del
upstream https://github.com/freeCodeCamp/mobile.git (push)
```
## Ejecutar la app móvil de freeCodeCamp localmente
## Running freeCodeCamp Mobile App Locally
Ahora que tienes una copia local de la app móvil de freeCodeCamp, puedes seguir estas instrucciones para ejecutarla localmente.
@@ -123,11 +123,11 @@ Y como siempre, siéntete libre de preguntar en la categoría ['Contribuyentes'
> [!NOTE] El directorio `móvil` contiene dos carpetas, por ejemplo: `mobile-api` y `mobile-app`. `mobile-api` contiene el código API utilizado para ejecutar los podcasts. `mobile-app` contiene la aplicación Flutter que es donde deberías estar cuando siga los pasos siguientes.
### Configurar dependencias
### Configuring Dependencies
#### Paso 1: Configurar el archivo de variable de entorno
#### Step 1: Set Up the Environment Variable File
Las claves de la API por defecto y las variables de entorno se almacenan en el archivo `sample.env`. El contenido de este archivo necesita ser copiado a un nuevo archivo llamado `.env` para que se acceda dinámicamente durante el paso de la instalación. Recuerda cambiar el directorio a `mobile-app` antes de ejecutar los siguientes comandos.
Las claves de la API por defecto y las variables de entorno se almacenan en el archivo `sample.env`. This file needs to be copied to a new file named `.env` which is accessed dynamically during the installation step. Recuerda cambiar el directorio a `mobile-app` antes de ejecutar los siguientes comandos.
```console
# Crear una copia del "sample.env" y nombrarla ".env".
@@ -172,9 +172,9 @@ flutter run
> [!TIP] Si estás utilizando VSCode o Android Studio entonces puedes iniciar fácilmente la aplicación sin tener que ejecutar ningún comando en la terminal. Más información [aquí](https://docs.flutter.dev/get-started/test-drive).
## Hacer cambios localmente
## Making Changes Locally
Ahora puedes hacer cambios en archivos y hacer commit de los cambios en tu clon local de tu fork.
You can now make changes to files and commit your changes to the local clone of your fork.
Sigue estos pasos:
@@ -225,7 +225,7 @@ Sigue estos pasos:
git push origin main --force
```
Puedes validar que tu main actual concuerda con el upstream/main realizando un 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 @@ Sigue estos pasos:
git checkout -b fix/update-guide-for-xyz
```
Tu nombre de rama debería comenzar con `fix/`, `feat/`, `docs/`, etc. Evita el uso de números de incidencia en las ramas. Manténlos cortos, significativos y únicos.
Tu nombre de rama debería comenzar con `fix/`, `feat/`, `docs/`, etc. Evita el uso de números de incidencia en las ramas. Keep them short, meaningful, and unique.
Algunos ejemplos de buenos nombres de ramas son:
@@ -392,11 +392,11 @@ Si tienes problemas con la interfaz de usuario, o errores de compilación, una l
flutter clean
```
### Problemas al instalar dependencias
### Issues Installing Dependencies
Si obtienes errores al instalar las dependencias, por favor asegúrate de que no estés en una red restringida o que tu configuración de firewall no te impida acceder a los recursos.
Se paciente ya que la primera configuración puede tomar un tiempo dependiendo del ancho de banda de tu red.
Be patient as the first-time setup can take a while depending on your network bandwidth.
## Obtener ayuda

View File

@@ -117,17 +117,17 @@ Node.js comes bundled with `npm`, which you can use to install `pnpm`:
npm install -g pnpm
```
## Configurar freeCodeCamp localmente
## Set up freeCodeCamp Locally
Ahora que has instalado los requisitos previos, sigue[nuestra guía de configuración local](how-to-setup-freecodecamp-locally.md) para clonar, instalar y configurar freeCodeCamp localmente en tu máquina.
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]
>
> Tenga en cuenta que en este momento la configuración para las pruebas Cypress (y las necesidades relacionadas con la interfaz de usuario) son un trabajo en curso. Aún así deberías poder trabajar en la mayor parte del código base.
> Please note, at this time the setup for Cypress tests (and related GUI needs) are a work in progress. Aún así deberías poder trabajar en la mayor parte del código base.
## Enlaces útiles
- [Una configuración de desarrollador de WSL2 con Ubuntu 20.04, Node.js, MongoDB, VS Code y Docker](https://hn.mrugesh.dev/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - un artículo de Mrugesh Mohapatra (Staff Developer en 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)
- Preguntas frecuentes sobre:
- [Subsistema de Windows para Linux](https://docs.microsoft.com/en-us/windows/wsl/faq)
- [Docker Desktop para Windows](https://docs.docker.com/docker-for-windows/faqs)

View File

@@ -1,6 +1,6 @@
# Cómo traducir recursos de freeCodeCamp
## Prepárate para las contribuciones
## Prepare yourself for Contributions
> Guía de orientación de freeCodeCamp - Sin límites de velocidad
@@ -44,7 +44,7 @@ solo queremos que entiendas lo siguiente:
## Vista previa de Crowdin
Nuestro sueño es brindate los recursos para aprender, sin importar el idioma que hables. Para que nos ayuden con este gran esfuerzo, hemos integrado nuestro código-báse de código-abierto y nuestro currículo con [Crowdin](https://crowdin.com/) - Una herramienta que nos ayuda a localizar nuestro código-base.
Nuestro sueño es brindate los recursos para aprender, sin importar el idioma que hables. 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] Utilizamos una herramienta y un flujo de trabajo diferentes para traducir [artículos de noticias](https://www.freecodecamp.org/news). Si te interesa traducir artículos, lee [este anuncio](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/) y contacta al traductor lider de tu idioma.
@@ -60,7 +60,7 @@ El flujo de trabajo de traducción se divide en dos actividades principales:
> [!WARNING] Ya no estamos usando GitHub para traducir archivos directamente. Si fuiste colaborador y estás regresando, entonces dirígete a nuestra [plataforma de traducción](https://translate.freecodecamp.org/).
## Comenzando
## Getting Started
Primero, asegúrate de decir "Hola" en nuestro [Discord](https://discord.gg/PRyKn3Vbay). Publicamos actualizaciones regulares sobre los recursos de traducción y respondemos a muchas de tus consultas allí.
@@ -145,7 +145,7 @@ Traducir nuestra documentación de contribución es un flujo similar a la traduc
> [!NOTE] Nuestra documentación de contribución esta basada en `docsify`, y tenemos una forma especial de procesar los cuadros de mensaje como este. Si ves cadenas que comiencen con `[!NOTE]`, `[!WARNING]` o ` [!TIP]`, estas palabras NO deben traducirse.
### Cómo traducir la documentación con enlaces internos
### How to Translate Documentation with Internal Links
Cuando trabajes en la traducción de la documentación, ten en cuenta los enlaces internos que apuntan a una sección diferente de la documentación.

View File

@@ -197,7 +197,7 @@ $ ObjectId()
ObjectId("5a474d78df58bafeb3535d34")
````
El resultado es una nueva identificación, por ejemplo `5a474d78df58bafeb3535d34` arriba.
The result is a new id, for example, `5a474d78df58bafeb3535d34` above.
Una vez que tengas tu id, ponlo en el archivo markdown como el campo `id` en la parte superior, p.ej.
@@ -250,7 +250,7 @@ Si toma más de dos minutos completar el desafío, tienes dos opciones:
- Simplificar el desafío, o
- Dividir el desafío en dos desafíos.
La regla de los 2 minutos le obliga a usted, el diseñador del desafío, a hacer sus instrucciones concisas, su código semilla claro y sus pruebas directas.
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.
@@ -274,7 +274,7 @@ Usa `parseInt` para convertir la variable `realNumber` en un entero.
```
- Las referencias a los nombres de archivos y directorios de rutas (por ejemplo, `package.json`, `src/components`) deben estar envueltas en etiquetas `<code>`.
- Los bloques de código de múltiples líneas **deben estar precedidos por una línea vacía**. La siguiente línea debe comenzar con tres backticks seguidos inmediatamente por uno de los [idiomas soportados](https://prismjs.com/#supported-languages). Para completar el bloque de código, debe iniciar una nueva línea que solo tiene tres backticks y **otra línea vacía**. Ver el ejemplo a continuación:
- Los bloques de código de múltiples líneas **deben estar precedidos por una línea vacía**. La siguiente línea debe comenzar con tres backticks seguidos inmediatamente por uno de los [idiomas soportados](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**. Ver el ejemplo a continuación:
- El espacio en blanco es importante en Markdown, por lo que le recomendamos que lo haga visible en su editor.
**Nota:** Si va a utilizar un código de ejemplo en YAML, utilice yaml en lugar de yml para el idioma a la derecha de la comilla inversa.
@@ -290,9 +290,10 @@ Lo siguiente es un ejemplo de código:
````
- La información adicional en forma de una nota debe ser formateada `Nota: El texto restante de la nota...
- Si se necesitan varias notas. then list all of the notes in separate sentences using the format `Note: First note text. - Utilizar comillas simples donde sea aplicable
- Si se necesitan varias notas. then list all of the notes in separate sentences using the format `Note: First note text. Second note text.`
- Use single quotes where applicable
**Nota:** Se debe utilizar el equivalente _Markdown_ en lugar de etiquetas _HTML_.
**Note:** The equivalent _Markdown_ should be used in place of _HTML_ tags.
## Pruebas de escritura
@@ -302,7 +303,7 @@ Nuestro objetivo es comunicar el único punto que el reto está tratando de ense
Las pruebas de desafío pueden hacer uso de las librerías de aserción de Node.js y Chai.js. Además, si es necesario, se puede acceder al código generado por el usuario en la variable `code`. Además, el objeto `__helpers` expone varias funciones que simplifican el proceso de escritura de los test. Las funciones disponibles estan definidas en _client/src/utils/curriculum-helpers.ts_.
## Formatting seed code
## Formatting Seed Code
Here are specific formatting guidelines for the challenge seed code:
@@ -310,16 +311,16 @@ 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. El caso exacto y el espaciado del comentario del diccionario deben ser utilizados. El diccionario de comentarios no debe ser expandido sin una discusión previa con el equipo de desarrollo.
Los comentarios usados deben tener un espacio entre los caracteres del comentario y los propios comentarios. En general, los comentarios deben usarse con moderación. Siempre considere reescribir la descripción o las instrucciones de un desafío si pudiera evitar usar un comentario de código de semilla.
Ejemplo de comentario válido de JavaScript en una sola línea:
Example of a valid single-line JavaScript comment:
```js
// Sólo cambiar el código debajo de esta línea
// Only change code below this line
````
Ejemplo de un comentario de CSS válido:
@@ -372,7 +373,7 @@ class MyComponent extends React.Component {
}
```
### Traducción de comentarios de código de semilla
### Translation of Seed Code Comments
Hay diccionarios de comentarios separados para cada idioma. 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`. Cada diccionario consiste en un arreglo de objetos con una propiedad `id` única y una propiedad `text`. Solo debe modificarse el `text` para abarcar la traducción del comentario inglés correspondiente.
@@ -394,16 +395,16 @@ Si encuentras un problema en el tema de pistas/soluciones de un desafío existen
### Añadir nuevos temas de sugerencias/soluciones de Desafío
Siga los siguientes pasos cuando añada un nuevo tema relacionado con las pistas/soluciones del desafío.
Take the following steps when adding a new challenge hints/solutions-related topic.
1. Comience siguiendo los mismos pasos para crear un nuevo tema pero revise el siguiente para crear el título.
2. El título del tema debe comenzar con `Guía de Desafío gratuita:` concatenada con el título real del desafío curricular. Por ejemplo, si el desafío se llama "`Chunky Monkey`", el título del tema sería "`Guía gratuita del Desafío CodeCamp: Chunky Monkey`".
3. `camperbot` debe ser el dueño de estos temas/posts, así que necesitarás solicitar a un administrador que cambie la propiedad de la publicación principal a `camperbot`.
4. Una vez creado el nuevo tema, se crea un identificador del tema del foro. Se encuentra al final de la URL del tema del foro. Este id debe añadirse a la parte frontal del archivo de desafío curriculum a través del proceso normal de pull request para el botón `Obtener una pista` para vincular al tema.
### Orientaciones para el contenido de pistas y temas de soluciones
### Guidelines for Content of Hints and Solutions Topics
Cuando se proponga una solución para un tema de la Guía relacionado con el desafío del plan de estudios, debe añadirse el código completo. Esto incluye todo el código semilla original más los cambios necesarios para pasar todas las pruebas de desafío. Para crear nuevos temas de pistas/soluciones debe utilizarse la siguiente plantilla:
When proposing a solution for a curriculum challenge-related Guide topic, the full code must be added. Esto incluye todo el código semilla original más los cambios necesarios para pasar todas las pruebas de desafío. Para crear nuevos temas de pistas/soluciones debe utilizarse la siguiente plantilla:
````md
# El nombre del desafío va aquí

View File

@@ -1,10 +1,10 @@
# Cómo trabajar en una aplicación web de cliente localizada
# How to Work on Localized Client Webapp
La aplicación web de cliente basada en react que impulsa nuestra plataforma de aprendizaje se construyo utilizando Gatsby. Se traduce a varios idiomas utilizando [react-i18next](https://react.i18next.com/) y [i18next](https://www.i18next.com/).
The React-based client web app that powers our learning platform is built using Gatsby. Se traduce a varios idiomas utilizando [react-i18next](https://react.i18next.com/) y [i18next](https://www.i18next.com/).
Puedes obtener más información sobre cómo configurar la aplicación cliente localmente para su desarrollo siguiendo [nuestra guía de configuración local aquí](how-to-setup-freecodecamp-locally.md). Por defecto, la aplicación solo está disponible en inglés.
Puedes obtener más información sobre cómo configurar la aplicación cliente localmente para su desarrollo siguiendo [nuestra guía de configuración local aquí](how-to-setup-freecodecamp-locally.md). By default, the application is available only in English.
Una vez que hayas configurado el proyecto localmente, deberías poder seguir esta documentación para ejecutar el cliente en el idioma de tu elección de la lista de idiomas disponibles.
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.
Esto podría ser útil cuando se está trabajando en una función que se dirige específicamente a algo que implica la localización, y requiere que valides, por ejemplo, la etiqueta de un botón en un idioma diferente.
@@ -14,7 +14,7 @@ Veamos cómo funcionan los marcos de trabajo y las herramientas de i18n.
## Estructura de archivos
La mayoría de los archivos para traducir la plataforma se encuentran en la carpeta [`client/i18n`](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/client/i18n). Cada idioma tiene una carpeta dentro que contiene archivos JSON con las traducciones.
Most of the files for translating the platform are located in the [`client/i18n`](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/client/i18n) folder. Cada idioma tiene una carpeta dentro que contiene archivos JSON con las traducciones.
```console
config
@@ -55,11 +55,11 @@ La mayoría de los archivos para traducir la plataforma se encuentran en la carp
└── 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.
**Archivos traducidos en nuestra plataforma de traducción:**
- El archivo `translations.json` contiene la mayor parte del texto que aparece en los elementos de la interfaz de usuario. Las claves son usadas en el código base para obtener el texto correcto de cualquier lenguaje que sea seleccionado. Este archivo debe tener exactamente las mismas claves en todos los idiomas.
- El archivo `translations.json` contiene la mayor parte del texto que aparece en los elementos de la interfaz de usuario. Las claves son usadas en el código base para obtener el texto correcto de cualquier lenguaje que sea seleccionado. This file needs to have the same keys in all languages.
- El archivo `intro.json` contiene los pares clave-valor para el texto de introducción en las páginas de certificación.
@@ -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).
## Probando la app cliente en un idioma mundial
## 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'
<p>Welcome to <strong>freeCodeCamp</strong></p>
```
Puedes colocar la clave dentro de la etiqueta del componente como en el ejemplo de arriba, si el texto contiene etiquetas "simples" sin atributos. `br`, `strong`, `i`, and `p` están por defecto, pero esa lista puede ser extendida en la configuración i18n.
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` están por defecto, pero esa lista puede ser extendida en la configuración i18n.
### Elementos complejos anidados
@@ -264,7 +264,7 @@ El archivo English es la "fuente de la verdad" para todos los archivos `.json` q
Sería bueno mantener la clave en el mismo orden en todos los archivos también. Además, intenta poner todos los signos de puntuación, el espaciado, las comillas, etc. en los archivos JSON y no en los componentes o archivos del servidor.
> [!NOTE] El guion bajo (`_`) es un caracter especial para las claves en los archivos del lado del cliente. Vea [the documentation](https://www.i18next.com/translation-function/plurals) de como debe ser usado.
> [!NOTE] The underscore (`_`) is a reserved character for keys in the client-side files. Vea [the documentation](https://www.i18next.com/translation-function/plurals) de como debe ser usado.
## Documentación útil

View File

@@ -10,7 +10,7 @@ Estas instrucciones le indicarán cómo utilizar nuestra herramienta de edición
### Iniciar el Editor
Para iniciar el editor, asegúrese de estar en el directorio raíz de freecodecamp. 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.
El cliente se ejecutará en el puerto `3300`, por lo que puede acceder a él en `http://localhost:3300`. La API se ejecuta en el puerto `3200` para evitar conflictos con el cliente y el servidor de aprendizaje. Esto le permitirá ejecutar la aplicación freeCodeCamp al mismo tiempo que el editor, para que pueda probar sus cambios localmente.
@@ -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. Redirígete al directorio del proyecto.
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. Redirígete al directorio del proyecto.
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. Redirígete al directorio principal del proyecto.
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. Redirígete al directorio principal del proyecto.
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.
#### Como ejecutar un script
#### How to Run the Script
1. Redirígete al directorio del proyecto.
2. Run the following command:

View File

@@ -13,7 +13,7 @@ Se recomiendan los siguientes pasos al trabajar en un nuevo componente:
- Mostrar los casos de uso en el Storybook
- Escribir pruebas unitarias
## Investigación y planificación
## Researching and Planning
Antes de construir un componente, necesita investigar y documentar cómo se comporta y se ve la versión existente, para asegurarse de que el nuevo tiene estilos coincidentes y soporta todos los usos actuales. Para cumplir con los requisitos de accesibilidad web, también debe prestar atención al aspecto de accesibilidad del componente, ver qué elementos HTML y atributos ARIA se utilizan bajo el capó.
@@ -23,7 +23,7 @@ Preferimos solicitudes de extracción más pequeñas que grandes porque aceleran
Recomendamos abrir un número separado de GitHub para cada componente e incluir todas las notas en la descripción de incidencias. Se puede utilizar como un lugar para alojar todas sus notas de trabajo, así como una forma de comunicar el enfoque con los revisores. Utilizaremos el tema para seguir debatiendo, si es necesario. [El problema para el componente Button](https://github.com/freeCodeCamp/freeCodeCamp/issues/45357) puede ser utilizado como referencia.
## Implementando el componente
## Implementing the Component
Se puede crear un nuevo componente utilizando el siguiente comando desde el directorio raíz:
@@ -43,25 +43,25 @@ El comando generará una nueva carpeta dentro del directorio `ui-components`, co
| `my-component.tsx` | Ahí es donde aplicamos el componente. |
| `types.ts` | It is where we locate the component's interface and types. |
Cada componente es diferente, pero en general un componente debería:
Each component is different, but in general, a component should:
- Apoyar el reenvío de ref
- Estilo tanto para temas claros como oscuros
- Estilo internamente basado en sus accesorios (los consumidores no deben necesitar reponer el componente con el accesorio `className`)
- Utilizar el sistema de estilo incorporado desde Tailwind, en lugar de tener estilos personalizados
### Uso de los colores
### Using Colors
Hay dos "capas" de color en la biblioteca de componentes:
- La capa base, donde los nombres de los colores describen lo que son los colores, por ejemplo, `gray00`, `blue50`
- La capa semántica, donde los nombres de los colores describen para qué sirven, por ejemplo, `foreground-primary`, `background-danger`
Generalmente, cuando se utilizan colores en un componente, se deben elegir variables semánticas en lugar de las básicas. Sin embargo, hay excepciones, específicamente cuando se estilan los estados del componente, tales como hover, active, disabled, etc. En estos casos, recomendamos utilizar directamente las variables base en lugar de crear nuevas variables semánticas, ya que cada componente puede tener diferentes estilos para sus estados.
Generally, when using colors in a component, you should choose semantic variables over the base ones. Sin embargo, hay excepciones, específicamente cuando se estilan los estados del componente, tales como 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] La definición del color se encuentra en el [archivo `colors.css`](https://github.com/freeCodeCamp/freeCodeCamp/blob/main/tools/ui-components/src/colors.css). Un color sólo está disponible para su uso si se añade al [archivo `tailwind.config.js`](https://github.com/freeCodeCamp/freeCodeCamp/blob/main/tools/ui-components/tailwind.config.js) bajo la propiedad `colors`.
### Enlaces útiles
### Useful Links
- [Configuración del CSS de Tailwind](https://tailwindcss.com/docs/configuration)
- [Documentación de React Bootstrap v0.33](https://react-bootstrap-v3.netlify.app)
@@ -69,7 +69,7 @@ Generalmente, cuando se utilizan colores en un componente, se deben elegir varia
- [Implementación actual de React Bootstrap](https://github.com/react-bootstrap/react-bootstrap/tree/master/src)
- [Pruebas actuales de React Bootstrap](https://github.com/react-bootstrap/react-bootstrap/tree/master/test)
## Mostrar los casos de uso en el Storybook
## Displaying the Use Cases on Storybook
Los casos de uso del componente deben añadirse al archivo Storybook (`.stories.tsx`).
@@ -81,7 +81,7 @@ pnpm run storybook
La página Storybook está disponible en [http://localhost:6006](http://localhost:6006).
## Escribir pruebas unitarias
## Writing Unit Tests
Usamos [React Testing Library](https://testing-library.com/docs/react-testing-library/intro/) para escribir pruebas unitarias. Las pruebas deben afirmar que los componentes se comportan como se espera y son accesibles.
@@ -91,7 +91,7 @@ Para ejecutar pruebas a la biblioteca de componentes, ejecute el siguiente coman
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
```
### Enlaces útiles
### Useful Links
- [Pruebas de Accesibilidad](https://testing-library.com/docs/dom-testing-library/api-accessibility)
- [Orden de prioridad de las consultas de React Testing Library](https://testing-library.com/docs/queries/about/#priority)

View File

@@ -1,12 +1,12 @@
# Cómo trabajar en la documentación
# How to Work on Documentation
## Trabajar en el contenido de los documentos
## Work on the Content of the Docs
Para trabajar en las pautas de contribución, puedes editar o agregar archivos al directorio `docs`, [disponible aquí](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/docs). Cuando tus cambios se fusionen, automáticamente estarán disponibles en el sitio de documentación.
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.
### Cómo crear un enlace interno
### 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).
## Trabajar en el tema de los documentos
## Work on the Docs Theme
> [!NOTE] Recuerda que no necesitas establecer nada para trabajar en el contenido para el sitio de documentación.
>
> Para trabajar en las directrices de contribución, consulte [trabajar en la sección de contenido de documentos](#work-on-the-docs-content).
### Estructura de los documentos de la página web
### 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
- La página de inicio se genera a partir del [`_coverpage.md`](_coverpage.md).
- The sidebar navigation is generated from [`_sidebar.md`](_sidebar.md).
### Ejecutando el sitio de documentación localmente
### 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:
#### Ejecutar y lanzar solo el sitio de documentación
#### Serve and Launch the Documentation Site
```console
pnpm run docs:serve
```
#### Servir el sitio de documentación junto a freeCodeCamp local:
```console
pnpm run develop
```
> The documentation site should be available at <http://localhost:3400>

View File

@@ -1,8 +1,8 @@
Esta página describe cómo contribuir a los tutoriales y proyectos de freeCodeCamp que se complementan usando la extensión CodeRoad de VS Code.
## Cómo funcionan los tutoriales
## How the Tutorials Work
Los tutoriales de freeCodeCamp que utilizan CodeRoad tienen cada uno su propio repositorio bajo la organización freeCodeCamp en GitHub. Todos comienzan con `learn-`. Por ejemplo, `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. Todos comienzan con `learn-`. Por ejemplo, `https://github.com/freeCodeCamp/learn-bash-by-building-a-boilerplate/`.
Cada repositorio tiene una rama principal `main` y una "versión" de rama, por ejemplo. `v1.0.0`.
@@ -18,7 +18,7 @@ Para realizar cambios a los commits en una rama de versión, necesitaría realiz
>
> Nunca realice o envíe cambios a una rama de versión que se encuentre en uno de los repositorios de freeCodeCamp. Siempre cree una nueva
## Cómo contribuir
## How to Contribute
### Requisitos previos
@@ -49,7 +49,7 @@ Siga estas instrucciones para hacer un PR, teniendo en cuenta que las instruccio
- Confirme los cambios con `update json` como mensaje
- Hacer un PR
### Probando cambios en `main`
### Testing Changes on `main`
Si deseas probar sus cambios en `main` después de seguir las instrucciones anteriores, sigue estas instrucciones:
@@ -64,7 +64,7 @@ El archivo `tutorial.json` no debería tener cambios para los hash de commit, o
Además, ten en cuenta que las instrucciones usualmente usan las lecciones a su alrededor para el contexto, así que asegúrate de que tienen sentido.
### Trabajando en la rama de versión
### Working on Version Branch
> [!ADVERTENCIA]
>
@@ -91,12 +91,12 @@ Sigue estas instrucciones para crear una nueva versión:
- Hacer un PR a `principal` usando su nueva rama `feat/version-X.X.Y`. Dale un título de `versión X.X.Y lista para la revisión`. Esto no se fusionará, es sólo para hacer saber a los revisores que hay una nueva versión lista
- Déjalo aquí para revisores
### Probando cambios a una rama de versiones
### Testing Changes to a Version Branch
- Sigue las instrucciones en el repositorio [rdb-alpha](https://github.com/freeCodeCamp/rdb-alpha) para ejecutar un contenedor
- Comience el tutorial utilizando el archivo `tutorial.json` en cualquier bifurcación en la que estén los cambios. Asegúrate de usar el archivo en la rama `feat: version-X.X.Y` y no la rama `main`
### Subiendo una nueva versión
### Pushing a New Version
Antes de empujar una nueva versión, ver la nueva `feat/version-vX.X.Y` (se fusionará a `main`) rama en el fork del usuario. Asegúrese de que hay adiciones al `CHANGELOG. d` archivo que incluye los nuevos cambios, y la versión en los dos manchas de la carga de código `. aml` coincide con la nueva rama de versión.
@@ -121,7 +121,7 @@ Si tienes acceso de escritura al repo de freeCodeCamp, has verificado los archiv
- Después de fusionar las relaciones públicas, abra el tutorial siguiendo las instrucciones en el repositorio [rdb-alpha](https://github.com/freeCodeCamp/rdb-alpha) para asegurarse de que está cargando correctamente, y que usted puede pasar unos pasos
- Finalmente, si existe algún PRs para esta versión, ciérrelos
### Cómo volver a una versión anterior
### How to Revert to a Previous Version
- Crea una nueva rama desde la última `main` con `git checkout -b revert/to-version-X.X.X`
- Revertir todos los commits en esta rama hasta e incluyendo el commit de la versión después del que desea revertir. Por ejemplo, puede haber commits que se vean así:

View File

@@ -2,9 +2,9 @@
Este manual lo ayudará a configurar y utilizar las herramientas para sus esfuerzos de localización.
## Cómo invitar a los nuevos contribuyentes a Ghost
## How to Invite New Contributors to Ghost
Ghost le permite establecer contribuyentes con diferentes niveles de autorizaciones.
Ghost allows you to set contributors with different levels of authorization.
La mayoría de tus invitaciones serán para el nivel de "Colaborador". Este nivel permite al usuario crear borradores. Selecciona este rol cuando invitas a un nuevo traductor.
@@ -14,7 +14,7 @@ El nivel "Editor" permite al usuario acceder a todos los Borradores y publicarlo
El nivel "Administrador" está reservado para el personal de freeCodeCamp y los líderes de idiomas.
### 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
## Cómo mencionar al autor original de un artículo traducido
## How to Mention the Original Author of a Translated Article
El autor original y el artículo original están vinculados automáticamente agregando este código a la Inyección de Código -> sección principal en la Configuración de Borradores en 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
<script>
@@ -36,24 +36,24 @@ El autor original y el artículo original están vinculados automáticamente agr
Con `link` siendo el enlace del artículo original.
## Cómo actualizar artículos en tendencia
## How to Update Trending Articles
> [!TIP] Cambiar los artículos en el pie de la página al menos una vez al mes significaria darle un impulso a los artículos vinculados con los resultados de Google.
> [!TIP] Changing the articles in the footer at least once a month means giving a boost to the linked articles on Google results.
Hay dos lugares en los que cambiar las tendencias de artículos.
- [El repositorio del currículo](https://github.com/freeCodeCamp/freeCodeCamp/)
- [El repositorio CDN](https://github.com/freeCodeCamp/cdn)
Para cada artículo necesitarás crear un título más corto para usar en el pie de página.
For each article, you will need to create a shorter title to use in the footer.
### Change trending articles in the curriculum
### Change Trending Articles in the Curriculum
The trending articles in the curriculum footer can be changed by editing the file at `client/i18n/locales/<language>/trending.json`.
This file is a `*.json` file that has the shape of an object with property keys in the shape `article0title` and `article0link`.
Each number rapresents one of the 30 articles in the footer. Make sure to match the title and the link correctly.
Each number represents one of the 30 articles in the footer. Make sure to match the title and the link correctly.
Este es un ejemplo de cómo tiene que verse parte del archivo `trending.json`.
@@ -77,11 +77,11 @@ Este es un ejemplo de cómo tiene que verse parte del archivo `trending.json`.
You will want to [build the translated client locally](how-to-enable-new-languages.md) to see if the titles have the right length. Each title must stay on a single line and not go to a new line.
### Cómo actualizar los artículos de tendencia en el cdn
### How to Update the Trending Articles in the CDN
The file in the cdn repository is the file `universal/trending/<language>.yaml`.
The file in the CDN repository is the file `universal/trending/<language>.yaml`.
This file is shaped differently, for example here the file content for the first 6 articles:
This file is shaped differently. For example, here is the file content for the first 6 articles:
```yaml
article0title: 'Unire CSV con Python'
@@ -102,9 +102,9 @@ You can convert from one format to the other carefully changing it manually. Or
> [!TIP] A new workflow is being worked on, there will be only one place to change in the future.
## How to translate articles in the footer links
## How to Translate Articles in the Footer Links
There are some links listed at the bottom of the footer (About, Alumni Network, Open Source etc.) and some of them can be translated into your language in the same way as other articles.
There are some links listed at the bottom of the footer (About, Alumni Network, Open Source, etc.) and some of them can be translated into your language in the same way as other articles.
Articles that can be translated:
@@ -126,7 +126,7 @@ The following links are pointing to external sites and cannot be translated:
- Alumni Network
- Open Source
### Change the footer links in the news
### Change the Footer Links in the News
Once you have translated and published the articles listed as "can be translated" above, you can update the links in the footer for `/news` by editing the file at `news/config/i18n/locales/<your language>/links.json` in the [freeCodeCamp/news](https://github.com/freeCodeCamp/news) repository.
@@ -146,7 +146,7 @@ Update the following part in the file:
}
```
### Change the footer links in the curriculum
### Change the Footer Links in the Curriculum
When you have translated and published the articles listed as "can be translated" above, as well as when the curriculum in your language is ready for launch, you can update the links in the footer for `/learn` by editing the file at `client/i18n/locales/<your language>/links.json` in the [freeCodeCamp/freeCodeCamp](https://github.com/freeCodeCamp/freeCodeCamp) repository.
@@ -172,7 +172,7 @@ Update the following part in the file:
}
```
## How to translate the info boxes headers in the documentation
## How to Translate the Info Boxes Headers in the Documentation
You can find these boxes all around the documentation:
@@ -248,7 +248,7 @@ flexibleAlerts: {
}
```
## Cómo traducir las citas motivacionales
## How to Translate the Motivational Quotes
The motivational quotes can be found in the [curriculum repository](https://github.com/freeCodeCamp/freeCodeCamp/) in the `/client/i18n/locales/<language>/motivation.json` file.
@@ -265,7 +265,7 @@ The compliments are the short sentences that appear at the completion of a chall
You don't need to directly translate the sentences used in English, you can write a set of short sentences that are appropriate to show at the completion of a challenge.
The `compliments` array is an array of strings, so for example you would write:
The `compliments` array is an array of strings. So, for example, you would write:
```json
{
@@ -296,9 +296,9 @@ The `motivationalQuotes` array is an array of objects, these objects should incl
}
```
> [!TIP] You should start with at least a dozen quotes, to have some variety. A new quote is shown every time the user reload the page.
> [!TIP] You should start with at least a dozen quotes, to have some variety. A new quote is shown every time the user reloads the page.
## How to update the common links
## How to Update the Common Links
We maintain a file of common links used throughout our [curriculum site](https://github.com/freecodecamp/freecodecamp) in the `/client/i18n/locales/<language>/links.json` file.
@@ -306,7 +306,7 @@ Some of these links will not change - but you should update the `/news` article
You should also update the `help` categories to point to your language's subforum (usually `language/category`, like `Italiano/HTML-CSS`). This will allow campers to create "help posts" in the correct forum location.
## How to update the site meta-data
## How to Update the Site Meta-Data
The site meta-data is in the `/client/i18n/locales/<language>/meta-tags.json` file. This file has five keys: `title`, `description`, `social-description`, `keywords`, and `youre-unsubscribed`.
@@ -330,7 +330,7 @@ You can choose "From Machine Translation" or "From Translation Memory". Choose "
Then there are three steps to complete:
1. Files. Choose which files to translate, you can do all the project, or specific folders or files.
1. Files. Choose which files to translate, you can do all the projects, or specific folders or files.
2. Languages. Set your language here.
3. Existing Translations. The best combination here is "100% match" and "Apply to untranslated strings only". Do not approve automatically, as it's always best to have a human eye on things.
@@ -338,35 +338,35 @@ Then there are three steps to complete:
When you have finished setting this, press the Pre-Translate button and wait. It will alert you once it has finished. The time it takes depends on how many untranslated strings are in the chosen files.
## How to update Crowdin Glossary
## How to Update Crowdin Glossary
> [!TIP] An updated glossary helps in having an homogeneous translation of technical terms.
> [!TIP] An updated glossary helps in having a homogeneous translation of technical terms.
The Crowdin Glossary is kept in the [crowdin-glossaries](https://github.com/freeCodeCamp/crowdin-glossaries) repository.
In the `glossaries` folder there are various `*.csv` (comma separated values) files, one for each of the crowdin projects that have a glossary that can be updated from this workflow.
In the `glossaries` folder, there are various `*.csv` (comma,separated values) files, one for each of the crowdin projects that have a glossary that can be updated from this workflow.
The `client.csv` file is for the Learn User Interface project, the `curriculum.csv` file is for the Coding Curriculum project, the `docs.csv` file is for the Contributing Documentation project.
To update the Crowdin Glossaries you need to clone this repo locally. Open the `.csv` file with an appropriate program, for example Microsoft Excel.
To update the Crowdin Glossaries, you need to clone this repo locally. Open the `.csv` file with an appropriate program, for example, Microsoft Excel.
In the `.csv` file you will find that the English language occupies the first three columns, `Term:English` is the column for the English term, `Description:English` is the column for the English description, and `Part:English` is for the part of speech (e.g., noun, verb etc.) of the term.
Then, each target language has two columns. If you translate to Dothraki, you will be interested in the columns `Term:Dothraki` and `Description:Dothraki`. The column `Term:Dothraki` is for the translation of the term in Dothraki, and the column `Description:Dothraki` is for a description of the term in Dothraki.
> [!TIP] In programs like Microsoft Excel you can hide the columns of the other languages to free up screen real-estate and see the English columns and the target language columns near each other.
> [!TIP] In programs like Microsoft Excel, you can hide the columns of the other languages to free up screen real-estate and see the English columns and the target language columns near each other.
After you have made the changes and saved the file, you will need to make a PR with the proposed changes. After the PR is accepted, you will need to run the GitHub Action workflow to update the Crowdin Glossary. Your glossary changes will not have immediate effects, but they will come.
## How to Promote a Contributor to Proofreader
If you consider that a contributor could become a Crowdin Proofreader, you can give the proofreader role to them in this way:
If you consider that a contributor could become a Crowdin Proofreader, you can give the proofreader role to them this way:
In Crowdin, individuate the `User management` on the left hand side menu.
In Crowdin, individuate the `User management` on the left-hand side menu.
This will open the user management tools, you will be able to see the list of all the users.
Search for the user that will become proofreader. Use the three dots menu on the user row to open a menu and select "Add to team". The proofreader teams have a standard name of `Proof Readers (<language>)`, you can search the team using the language name. Once you have selected the team, use the "ADD" button at the bottom of the page to finalize the thing.
Search for the user that will become a proofreader. Use the three dots menu on the user row to open a menu and select "Add to team". The proofreader teams have a standard name of `Proof Readers (<language>)`, you can search the team using the language name. Once you have selected the team, use the "ADD" button at the bottom of the page to finalize the thing.
The user is now a proofreader.

View File

@@ -18,7 +18,7 @@ freeCodeCamp es una comunidad inclusiva y necesitamos mantenerla de esa manera.
Tenemos un solo [Código de Conducta](https://code-of-conduct.freecodecamp.org) que gobierna toda nuestra comunidad. Cuantas menos reglas, mas fácil serán de recordar. Puedes leerlas y memorizarlas [aquí](https://code-of-conduct.freecodecamp.org).
> [!NOTE] Como moderador, te añadiríamos a uno o más equipos en GitHub, nuestros foros de la comunidad & servidores de chat. Si no tienes acceso a una plataforma que te gustaría moderar, por favor [ponte en contacto con uno de los miembros del personal](FAQ.md#additional-assistance).
> [!NOTE] As a moderator, we would add you to one or more teams on GitHub, our community forums & chat servers. Si no tienes acceso a una plataforma que te gustaría moderar, por favor [ponte en contacto con uno de los miembros del personal](FAQ.md#additional-assistance).
## Moderando GitHub
@@ -77,7 +77,7 @@ Las solicitudes de extracción (PRs) es la forma en que los colaboradores envía
Tu puedes cerrar pull requests no válidas y responderlas con estas [ plantillas de respuesta ](moderator-handbook.md#closing-invalid-pull-requests).
If the changes look good, please ensure to leave an approval with a "LGTM" comment. Una vez que un Pull Request recibe al menos dos aprovaciones (incluyendo la tuya) de los moderadores o del equipo de desarrollo, puedes hacer un Merge.
If the changes look good, please ensure to leave an approval with an "LGTM" comment. Una vez que un Pull Request recibe al menos dos aprovaciones (incluyendo la tuya) de los moderadores o del equipo de desarrollo, puedes hacer un Merge.
3. **Cambios a la Plataforma**
@@ -91,15 +91,15 @@ Las solicitudes de extracción (PRs) es la forma en que los colaboradores envía
Algunos RP son actualizaciones de dependencia automatizadas realizadas a través de una integración. Tu no debes fusionar ni aprobar estos RP. Uno de los miembros del equipo de desarrollo se encargará de revisar y fusionar dichos PRs automatizados.
#### Cómo combinar o cerrar pull requests
#### How to Review, Merge, or Close Pull Requests
##### Asignarse a una solicitud de extracción:
##### Assign yourself to a Pull Request:
En primer lugar, cuando elijas un pull request a QA, deberás asignarte a él. Puedes hacer esto haciendo clic en el enlace "assign yourself" debajo de la parte "assignees" en la columna derecha de la interfaz de GitHub.
Dependiendo del tipo de pull request que sea, siga las reglas indicadas arriba.
##### Asegúrese de que las comprobaciones de CI estén pasando:
##### Ensure the CI Checks are Passing:
Antes de hacer Merge a cualquier Pull Request, asegúrate que Github está tomando todos los Checks (las marcas verdes de aprobación) y que están pasando correctamente en los Pull Request. Si ves que falla alguna de las comprobaciones, investiga y obtén alguna aclaración sobre la causa raíz. ¿Se está realizando el cambio rompiendo nuestras pruebas? ¿El sitio compilará correctamente si el PR hace Merge? Estos controles son fundamentales para la estabilidad de la plataforma.
@@ -115,7 +115,7 @@ Los cambios del pull request estarán en la parte superior, y los cambios de la
Si no está seguro, pida ayuda a uno de los compañeros moderadores o al equipo de desarrollo.
##### Cerrando pull requests no válidos:
##### Merging a Valid Pull Request:
Si el pull request parece estar listo para fusionarse (y no requiere la aprobación de @raisedadead), puedes seguir adelante y fusionarlo. Asegúrese de utilizar la opción predeterminada ** "Squash and Merge" **. Esto juntará todos los commits de las solicitudes de extracción en un solo commit, lo que hará que el historial de Git sea mucho más fácil de leer.
@@ -189,7 +189,7 @@ Again, if you have any problems or questions, make a post with your actions in t
If a user replies in a help thread for the freeCodeCamp curriculum with a solution, remove it and use the **Solution Instead of Help** canned reply (or a similar response in your own words).
If the OP (Original Poster) replies within a freeCodeCamp curriculum help thread with their final solution, blur it and use the **Blurred Spoiler Solution** canned reply.
If the OP (Original Poster) replies within a freeCodeCamp curriculum help thread with their final solution, blur it, and use the **Blurred Spoiler Solution** canned reply.
If a user creates a thread asking for feedback on a solution, move the thread to the feedback subforum and blur the solution, as necessary. If the user is only posting the solution to show it off, then unlist the thread and use the **Solutions Thread** canned reply.
@@ -207,9 +207,9 @@ Por favor, vuelva a unirse una vez que haya alcanzado al menos 13 años de edad.
Gracias por su entendimiento.
```
### Moderating Via Cell-phone
### Moderating Via Cell Phone
Moderating the forum is possible via a cell-phone but you may encounter some usage quirks. This is not an exhaustive list.
Moderating the forum is possible via a cell phone but you may encounter some usage quirks. This is not an exhaustive list.
- When trying to include a "Canned reply" in a response, if the menu doesn't open (after clicking on the gear), click on the text area first then try it again.
- The moderator's 'wrench' is at the bottom of the view-port but if you click it and cannot see the "Select Posts" button because it has scrolled out of view, you may need to try to scroll to it, though sometimes that doesn't work in which case moving to a desktop/laptop monitor may be needed.
@@ -231,7 +231,7 @@ Here's how moderators deal with violations of our [Code of Conduct](https://code
1. **Asegúrese de que el usuario ha querido violar el [Código de Conducta](https://code-of-conduct.freecodecamp.org).**
Not all violations of the [Code of Conduct](https://code-of-conduct.freecodecamp.org) were intended as such. A new camper might post a large amount of code for help, unaware that this can be disruptive to conversation. En estos casos, puedes pedir que copien su código en aplicaciones como CodePen o Pastebin.
Not all violations of the [Code of Conduct](https://code-of-conduct.freecodecamp.org) were intended as such. A new camper might post a large amount of code for help, unaware that this can be disruptive to the conversation. En estos casos, puedes pedir que copien su código en aplicaciones como CodePen o Pastebin.
2. **If the camper clearly and intentionally violates the [Code of Conduct](https://code-of-conduct.freecodecamp.org), the moderator will proceed as follows:**
@@ -440,7 +440,7 @@ Hola @nombredeusuario
Este RP parece realizar cambios similares a los del RP existente & lt; # number & gt .
Como tal, vamos a cerrar esto como duplicado.
As such, we are going to close this as a duplicate.
Si cree que tiene cambios adicionales para expandir este PR, no dude en presionar sus confirmaciones y solicitar que este PR se vuelva a abrir.
@@ -475,7 +475,7 @@ Cerramos esta solicitud de extracción. Sugiera enlaces y otros detalles para ag
Si consideras que nos hemos equivocado cerrando esta incidencia, por favor solicita su reapertura y añade más aclaraciones. Thank you and happy coding.
```
### Adding comment about newbie mistakes
### Adding Comment About Newbie Mistakes
```markdown
As a new contributor, we encourage you to read our [contributing guidelines](https://contribute.freecodecamp.org).

View File

@@ -20,7 +20,7 @@ Después de confirmar las directrices anteriores, no dude en enviar un correo el
Una vez que nos informe de una vulnerabilidad, la investigaremos y nos aseguraremos de que no sea un falso positivo. Si necesitamos aclarar algún detalle, nos pondremos en contacto con usted. Puede enviar informes separados para cada problema que encuentre. Tenga en cuenta que no podremos responder a las cuestiones que consideremos que están fuera de las directrices.
## Plataformas y Bases de Código
## Platforms and Codebases
Esta es una lista de las plataformas y bases de código para las que aceptamos informes:

View File

@@ -1,6 +1,6 @@
If you are facing issue, there is a high chance that the resolution is in this documentation.
If you are facing an issue, there is a high chance that the resolution is in this documentation.
### Issues with installing the recommended prerequisites
## 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).
@@ -12,9 +12,9 @@ If you are on a different OS or are still facing issues, see [getting help](#get
>
> Please avoid creating GitHub issues for problems with the prerequisite technologies. They are out of the scope of this project.
### Issues missing the UI, Fonts, language strings, or build errors.
## Issues with Missing UI, Fonts, Language Strings, or Build Errors
When you build the client, Gatsby will cache the Fonts, language strings and UI. If one of them isn't cached, run the following:
When you build the client, Gatsby will cache the Fonts, language strings, and UI. If one of them isn't cached, run the following:
```console
pnpm run clean
@@ -48,7 +48,7 @@ git clean -ifdX
<img src="https://user-images.githubusercontent.com/1884376/94270515-ca579400-ff5d-11ea-8ff1-152cade31654.gif" alt="How to clean git untracked files" />
</details>
### Issues with API, login, Challenge Submissions, etc.
## 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.
@@ -74,19 +74,19 @@ TCP 0.0.0.0:3000 DESKTOP LISTENING
---
### Issues signing out while navigating
## Issues Signing Out while Navigating
While in development, your session is stored as cookies. Clearing them will sign you out of your development account.
Running `pnpm run seed:certified-user` will log you out, too. It will overwrite the development user in your local database.
### Issue getting 404 when navigating profile page
## Issue Getting 404 when Navigating Profile Page
When you try to navigate to http://localhost:8000/developmentuser to view the profile page, Gatsby takes over serving the client-side pages and hence you will get a 404 page for the user profile when working.
There is a "Preview Custom 404 Page" button, click it to see the profile.
### Issues installing dependencies
## Issues Installing DDependencies
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.

View File

@@ -2,14 +2,14 @@
Los tokens de usuario se utilizan para identificar usuarios a terceros de modo que los desafíos completados con esos servicios pueden ser guardados en la cuenta de usuario.
## Cómo se crean
## How they are Created
Por el momento, los tokens sólo se utilizan para presentar los retos de la base de datos relacional. A token gets created when a signed-in user clicks the "Click here to start the course" or "Click here to start the project" buttons to start one of the Relational Database courses or projects.
## Cuando se eliminan
## When they Get Deleted
Se eliminará un token de usuario cuando un usuario se desconecte de freeCodeCamp, restablezca su progreso, borra su cuenta, o borra manualmente el token usando el widget de la página de configuración.
## Cómo funcionan
## How they Work
Los tokens se almacenan en una colección de `UserToken` en la base de datos. Cada registro tiene un único `_id`, que es el token, y un `user_id` que enlaza a la cuenta del usuario desde la colección `user`. El token se codifica usando JWT y se envía al cliente cuando se crea. That encoded token is then given to third-party services that need it and sent to our API by them when a challenge is completed. Cuando nuestro API lo recibe, está decodificado para que podamos identificar al usuario que envía un desafío y guardar el desafío completado en sus `Desafíos completos`.

View File

@@ -1,6 +1,6 @@
### GitHub und Open Source sind neu für mich. Wo sollte ich anfangen?
Lies unseren Leitfaden ["How to Contribute to Open Source"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). Es ist ein umfassendes Nachschlagewerk für einsteigerfreundliche Projekte. Und er enthält eine Menge Tipps für Open-Source-Beiträge.
Lies unseren Leitfaden ["How to Contribute to Open Source"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). Es ist ein umfassendes Nachschlagewerk für einsteigerfreundliche Projekte. And it includes a lot of open-source contribution tips.
### Was muss ich wissen, um zur Codebasis beizutragen?

View File

@@ -2,11 +2,11 @@
Dieser Leitfaden wird dir helfen zu verstehen, wie unser Infrastruktur-Stack aufgebaut ist und wie wir unsere Plattformen warten. Dieses Handbuch enthält zwar nicht alle Einzelheiten zu allen Vorgängen, aber er kann als Referenz für dein Verständnis der Systeme dienen.
Lassen es uns wissen, wenn du Feedback oder Fragen hast, dann klären wir das gerne.
Let us know if you have feedback or queries and we will be happy to clarify.
# Handbuch - Bereitstellung von Code
## Flight Manual - Code Deployments
Dieses Repository wird kontinuierlich entwickelt, getestet und auf **einzelne Infrastrukturen (Server, Datenbanken, CDNs, etc.)** verteilt.
This repository is continuously built, tested, and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**.
Dies umfasst drei Schritte, die nacheinander zu durchlaufen sind:
@@ -14,7 +14,7 @@ Dies umfasst drei Schritte, die nacheinander zu durchlaufen sind:
2. Diese Änderungen durchlaufen eine Reihe von automatisierten Tests.
3. Sobald die Tests bestanden sind, geben wir die Änderungen frei (oder aktualisieren sie bei Bedarf) und stellen sie in unserer Infrastruktur bereit.
#### Erstellen der Codebasis - Zuordnen von Git-Branches zu Deployments.
### Building the codebase - Mapping Git Branches to Deployments
Normalerweise wird [`main`](https://github.com/freeCodeCamp/freeCodeCamp/tree/main) (der Standard-Entwicklungsbranch) einmal am Tag in den [`prod-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/prod-staging)-Branch zusammengeführt und in einer isolierten Infrastruktur freigegeben.
@@ -26,33 +26,33 @@ Sobald das Entwicklerteam [`@freeCodeCamp/dev-team`](https://github.com/orgs/fre
Dies ist die finale Version, die Änderungen auf unsere Produktionsplattformen auf freeCodeCamp.org überführt.
#### Test von Änderungen, Integrations- und Benutzerakzeptanztests.
### Testing changes - Integration and User Acceptance Testing
Wir verwenden verschiedene Stufen von Integrations- und Abnahmetests, um die Qualität des Codes zu überprüfen. Alle unsere Tests werden durch Software wie [GitHub Actions CI](https://github.com/freeCodeCamp/freeCodeCamp/actions) und [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp) durchgeführt.
Wir nutzen Unit-Tests zum Testen unserer Aufgabenlösungen, Server-APIs und Client-Benutzeroberflächen. Diese helfen uns, die Integration zwischen verschiedenen Komponenten zu testen.
We have unit tests for testing our challenge solutions, Server APIs, and Client User interfaces. Diese helfen uns, die Integration zwischen verschiedenen Komponenten zu testen.
> [!NOTE] Wir sind auch dabei, Endnutzertests zu schreiben, die dabei helfen werden, reale Szenarien zu erzeugen, wie z. B. das Aktualisieren einer E-Mail oder das Aufrufen der API von Diensten eines Drittanbieters.
> [!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.
All diese Tests helfen dabei, zu verhindern, dass sich Probleme wiederholen und stellen sicher, dass wir keinen Fehler einführen, während wir an einem anderen Fehler oder einer Funktion arbeiten.
#### Bereitstellen von Änderungen - Übertragen von Änderungen auf die Server.
### Deploying Changes - Pushing changes to servers
Wir haben eine Continuous-Delivery-Software konfiguriert, um Änderungen auf unsere Entwicklungs- und Produktionsserver zu übertragen.
Sobald die Änderungen in die geschützten Release-Branches geschoben werden, wird automatisch eine Build-Pipeline für den Branch erstellt. Die Build-Pipelines sind für die Erstellung von Artefakten und deren Aufbewahrung in einem Cold Storage zur späteren Verwendung zuständig.
Die Build-Pipeline erstellt eine entsprechende Release-Pipeline, wenn sie einen erfolgreichen Lauf absolviert hat. Die Release-Pipelines sind dafür verantwortlich, die Build-Artefakte zu sammeln, sie auf die Server zu verschieben und live zu gehen.
Die Build-Pipeline erstellt eine entsprechende Release-Pipeline, wenn sie einen erfolgreichen Lauf absolviert hat. The release pipelines are responsible for collecting the build artifacts, moving them to the servers, and going live.
Status der Builds und Releases sind [hier](#build-test-and-deployment-status) verfügbar.
The statuses of builds and releases are [available here](#build-test-and-deployment-status).
## Build, Test und Deploy auslösen
## Trigger a Build, Test, and Deploy
Derzeit können nur Mitglieder des Entwicklerteams in die Produktionsbranches pushen. Die Änderungen in den `production*`-Branches können nur per Fast-Forward-Merge im [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp) landen.
Currently, only members of the developer team can push to the production branches. Die Änderungen in den `production*`-Branches können nur per Fast-Forward-Merge im [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp) landen.
> [!NOTE] In der nächsten Zeit wollen wir diesen Ablauf verbessern, indem wir ihn über Pull-Requests abwickeln, um eine bessere Zugriffsverwaltung und Transparenz zu erreichen.
> [!NOTE] In the upcoming days, we would improve this flow to be done via pull requests, for better access management and transparency.
### Änderungen in die Staging-Anwendungen verschieben.
### Pushing changes to Staging Applications
1. Den Remotezugriff korrekt konfigurieren.
@@ -102,15 +102,15 @@ Derzeit können nur Mitglieder des Entwicklerteams in die Produktionsbranches pu
git push upstream
```
> [!NOTE] Du kannst keinen Push erzwingen und wenn du die History in irgendeiner Weise umgeschrieben hast, werden diese Befehle fehlschlagen.
> [!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.
>
> Wenn dies der Fall ist, hast du möglicherweise etwas falsch gemacht und solltest noch einmal von vorn beginnen.
Die obigen Schritte lösen automatisch einen Lauf in der Build-Pipeline für den `prod-staging`-Branch aus. Sobald der Build abgeschlossen ist, werden die Artefakte als `.zip`-Dateien in einem Cold Storage gespeichert, um später abgerufen und verwendet werden zu können.
Die Release-Pipeline wird automatisch ausgelöst, wenn ein neues Artefakt über die angeschlossene Build-Pipeline verfügbar ist. Für Staging-Plattformen erfordert dieser Prozess keine manuelle Freigabe und die Artefakte werden auf den Client CDN und API-Server geschoben.
Die Release-Pipeline wird automatisch ausgelöst, wenn ein neues Artefakt über die angeschlossene Build-Pipeline verfügbar ist. For staging platforms, this process does not involve manual approval, and the artifacts are pushed to the Client CDN and API servers.
### Pushen von Änderungen an Produktionsanwendungen.
### Pushing changes to Production Applications
Der Prozess ist meist identisch mit den Staging-Plattformen, wobei einige zusätzliche Kontrollen durchgeführt werden. Dies geschieht nur, um sicherzustellen, dass wir nichts auf freeCodeCamp.org beschädigen, das jederzeit von Hunderten von Benutzern verwendet werden kann.
@@ -134,7 +134,7 @@ Der Prozess ist meist identisch mit den Staging-Plattformen, wobei einige zusät
git push upstream
```
> [!NOTE] Du kannst keinen Push erzwingen und wenn du die History in irgendeiner Weise umgeschrieben hast, werden diese Befehle fehlschlagen.
> [!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.
>
> Wenn dies der Fall ist, hast du vielleicht etwas falsch gemacht und solltest noch einmal von vorne beginnen.
@@ -142,7 +142,7 @@ Die obigen Schritte lösen automatisch einen Lauf in der Build-Pipeline für den
**Zusätzliche Schritte für Mitarbeiter (Staffs)**
Wenn ein Release-Lauf ausgelöst wird, erhalten die Mitarbeiter des Entwicklerteams eine automatisierte E-Mail zum manuellen Eingriff. Sie können den Freigabedurchlauf entweder _genehmigen_ oder _ablehnen_.
Once a release run is triggered, members of the developer staff team will receive an automated manual intervention email. Sie können den Freigabedurchlauf entweder _genehmigen_ oder _ablehnen_.
Wenn die Änderungen einwandfrei funktionieren und auf der Staging-Plattform getestet wurden, kann die Freigabe erfolgen. Die Genehmigung muss innerhalb von 4 Stunden nach dem Auslösen der Veröffentlichung erteilt werden, bevor sie automatisch abgelehnt wird. Ein Mitarbeiter kann den Freigabelauf für abgelehnte Läufe manuell erneut auslösen oder auf den nächsten Freigabezyklus warten.
@@ -165,17 +165,17 @@ Hier ist der aktuelle Test-, Build- und Deployment-Status der Codebasis.
| [`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 Tests](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` (experimentell, in Vorbereitung) | - | - | - |
## Früher Zugang (Early access) und Beta-Tests
## Early Access and Beta Testing
Wir laden dich ein, diese Versionen in einem **"public beta testing"** Modus zu testen und frühen Zugriff auf kommende Funktionen der Plattformen zu erhalten. Manchmal werden diese Funktionen/Änderungen als **, Beta, Staging,** usw. bezeichnet.
Deine Mitwirkung in Form von Feedback und Fehlerberichten helfen uns, die Produktionsplattformen auf `freeCodeCamp.org` für alle **resilient**, **konsistent** und **stabil** zu machen.
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.
Wir danken dir, dass du uns Fehler meldest, auf die du stößt und uns hilfst, freeCodeCamp.org besser zu machen. Du rockst!
### Identifizierung der kommenden Version der Plattformen
### Identifying the Upcoming Version of the Platforms
Derzeit ist eine öffentliche Beta-Testversion verfügbar:
Currently, a public beta testing version is available at:
| Anwendung | Sprache | URL |
|:--------- |:---------- |:---------------------------------------- |
@@ -189,27 +189,27 @@ Derzeit ist eine öffentliche Beta-Testversion verfügbar:
> [!NOTE] Der Domainname ist anders als **`freeCodeCamp.org`**. Dies ist beabsichtigt, um die Indizierung durch Suchmaschinen zu verhindern und Verwirrung bei regelmäßigen Benutzern der Plattform zu vermeiden.
>
> Die obige Liste ist nicht abschließend für alle Anwendungen, die wir bereitstellen. Außerdem werden nicht alle Sprachvarianten im Staging bereitgestellt, um Ressourcen zu sparen.
> 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.
### Identifizierung der aktuellen Version der Plattformen
### Identifying the Current Version of the Platforms
**Die aktuelle Version der Plattform ist immer verfügbar unter [`freeCodeCamp.org`](https://www.freecodecamp.org).**
Das Entwicklerteam führt Änderungen aus dem `prod-staging`-Branch nach `prod-current` zusammen, wenn sie Änderungen veröffentlichen. Das oberste Commit sollte das sein, was du live auf der Website siehst.
Du kannst die genaue Version, die eingesetzt wurde, in den Build- und Deployment-Protokollen im Statusbereich nachlesen. Alternativ kannst du uns auch im ["contributers"-Chatraum](https://discord.gg/PRyKn3Vbay) anpingen, um eine Bestätigung zu erhalten.
Du kannst die genaue Version, die eingesetzt wurde, in den Build- und Deployment-Protokollen im Statusbereich nachlesen. Alternatively, you can also ping us in the [contributors chat room](https://discord.gg/PRyKn3Vbay) for a confirmation.
### Bekannte Einschränkungen
### Known Limitations
Es gibt einige bekannte Einschränkungen und Kompromisse bei der Beta-Version der Plattform.
- #### Alle Daten / persönliche Fortschritte auf diesen Beta-Plattformen werden NICHT gespeichert oder in die Produktion übernommen.
- #### All data / personal progress on these beta platforms will NOT be saved or carried over to production
**Benutzer der Beta-Version haben ein von der Produktionsversion getrenntes Konto.** Die Beta-Version verwendet eine von der Produktionsversion physisch getrennte Datenbank. So können wir versehentliche Datenverluste oder Änderungen verhindern. Das Entwicklerteam kann die Datenbank dieser Betaversion bei Bedarf löschen.
**Benutzer der Beta-Version haben ein von der Produktionsversion getrenntes Konto.** Die Beta-Version verwendet eine von der Produktionsversion physisch getrennte Datenbank. So können wir versehentliche Datenverluste oder Änderungen verhindern. The dev-team may purge the database on this beta version as needed.
- #### Es gibt keine Garantie für die Betriebszeit und Zuverlässigkeit der Beta-Plattformen.
- #### There are no guarantees on the uptime and reliability of the beta platforms
Es wird erwartet, dass die Deployments häufig und in schnellen Iterationen erfolgen, manchmal mehrmals am Tag. Daher kann es in der Beta-Version manchmal zu unerwarteten Ausfällen oder fehlerhaften Funktionen kommen.
Es wird erwartet, dass die Deployments häufig und in schnellen Iterationen erfolgen, manchmal mehrmals am Tag. As a result, there will be unexpected downtime at times or broken functionality on the beta version.
- #### Schicke keine normalen Nutzer auf diese Seite, um eine Korrektur zu bestätigen.
@@ -219,13 +219,13 @@ Es gibt einige bekannte Einschränkungen und Kompromisse bei der Beta-Version de
Wir verwenden einen Test-Mandanten für freeCodeCamp.dev auf Auth0 und haben daher nicht die Möglichkeit, eine benutzerdefinierte Domain einzustellen. Dies führt dazu, dass alle Weiterleitungsaufrufe und die Anmeldeseite auf einer Standarddomain erscheinen, wie z.B.: `https://freecodecamp-dev.auth0.com/`. Dies hat keinen Einfluss auf die Funktionalität und ist so nah an der Produktion, wie wir es nur bekommen können.
## Fehler melden und Feedback hinterlassen
## Reporting issues and leaving feedback
Bitte eröffne neue Issues für Diskussionen und zum Melden von Fehlern.
Du kannst eine E-Mail an `dev[at]freecodecamp.org` senden, wenn du irgendwelche Fragen hast. Wie immer sollten alle Sicherheitslücken an `security[at]freecodecamp.org` gemeldet werden, anstatt an den öffentlichen Tracker und das Forum.
# Handbuch- Serverwartung
## Flight Manual - Server Maintenance
> [!WARNING]
>
@@ -236,9 +236,9 @@ Als Mitarbeiterin oder Mitarbeiter hast du vielleicht Zugang zu unseren Cloud-An
Hier sind einige praktische Befehle, mit denen du an den virtuellen Maschinen (VM) arbeiten kannst, z. B. um Wartungsupdates durchzuführen oder allgemeine Aufgaben zu erledigen.
## Eine Liste der VMs abrufen
## Get a list of the VMs
> [!NOTE] Auch wenn du bereits SSH-Zugriff auf die VMs hast, kannst du damit allein noch nicht VMs auflisten, wenn du nicht auch Zugriff auf die Cloud-Portale hast.
> [!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"
```
## Neue Ressourcen erzeugen
## Spin New Resources
Wir arbeiten daran, unser IaC-Setup zu erstellen. Während das in Arbeit ist, kannst du das Azure-Portal oder die Azure CLI nutzen, um neue virtuelle Maschinen und andere Ressourcen zu starten.
> [!TIP] Unabhängig davon, welche Spinning-Ressourcen du wählst, haben wir ein paar [handliche Cloud-Init-Konfigurationsdateien](https://github.com/freeCodeCamp/infra/tree/main/cloud-init), die dir bei der grundlegenden Einrichtung helfen, z.B. bei der Installation von Docker oder dem Hinzufügen von SSH-Schlüsseln usw.
## VMs auf dem neuesten Stand halten
## Keep VMs Updated
Du solltest die VMs auf dem neuesten Stand halten, indem du Updates und Upgrades durchführst. So wird sichergestellt, dass die virtuelle Maschine mit den neuesten Sicherheitsupdates gepatcht ist.
Du solltest die VMs auf dem neuesten Stand halten, indem du Updates und Upgrades durchführst. This will ensure that the virtual machine is patched with the latest security fixes.
> [!WARNING] Bevor du diese Befehle ausführst:
>
> - Vergewissere dich, dass die VM vollständig provisioniert wurde und keine Post-Installationsschritte laufen.
> - Make sure that the VM has been provisioned completely and that there are no post-install steps running.
> - Wenn du Pakete auf einer VM aktualisierst, auf der bereits eine Anwendung läuft, stelle sicher, dass die Anwendung gestoppt/gespeichert wurde. Paket-Updates verursachen Netzwerkbandbreite, Speicher- und/oder CPU-Nutzungsspitzen, die zu Ausfällen bei laufenden Anwendungen führen.
Paketinformationen aktualisieren
@@ -319,7 +319,7 @@ Unbenutzte Pakete entfernen
sudo apt autoremove -y
```
## Arbeit an Webservern (Proxy)
## Work on Web Servers (Proxy)
Wir betreiben lastverteilte (Azure Load Balancer) Instanzen für unsere Webserver. Auf diesen Servern läuft NGINX, das den gesamten Datenverkehr von verschiedenen Anwendungen, die auf ihrer eigenen Infrastruktur laufen, zu freeCodeCamp.org umleitet.
@@ -370,7 +370,7 @@ Provisionieren der VMs mit Code
Ergänze/aktualisiere die Quell-/Herkunfts-IP-Adressen der Anwendung.
3. Richte Netzwerke und Firewalls ein.
3. Set up networking and firewalls.
Konfiguriere die Azure Firewalls und `ufw` nach Bedarf für die ingress-Ursprungsadressen.
@@ -415,7 +415,7 @@ nginx -t
nginx -s reload
```
## Arbeiten an API-Instanzen
## Work on API Instances
1. Installiere Build-Tools für Node-Binaries (`node-gyp`) usw.
@@ -435,7 +435,7 @@ Bereitstellung von VMs mit dem 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,11 +482,11 @@ pnpm pm2 monit
### Aktualisieren von Instanzen (Wartung)
Codeänderungen müssen von Zeit zu Zeit auf die API-Instanzen übertragen werden. Es kann ein fortlaufendes Update oder ein manuelles Update sein. Letzteres ist wichtig beim Ändern von Abhängigkeiten oder Hinzufügen von Umgebungsvariablen.
Codeänderungen müssen von Zeit zu Zeit auf die API-Instanzen übertragen werden. Es kann ein fortlaufendes Update oder ein manuelles Update sein. The latter is essential when changing dependencies or adding environment variables.
> [!ATTENTION] Automatisierte Pipelines können derzeit keine Aktualisierungen von Abhängigkeiten vornehmen. Wir müssen eine manuelle Aktualisierung durchführen, bevor die Deployment-Pipeline ausgeführt wird.
#### 1. Manuelle Updates - Werden für die Aktualisierung von Abhängigkeiten und Umgebungsvariablen verwendet.
#### 1. Manual Updates - Used for updating dependencies, env variables.
1. Stop all instances
@@ -512,13 +512,13 @@ pnpm prebuild && pnpm build:curriculum && pnpm build:server
pnpm start:server && pnpm pm2 logs
```
#### 2. Fortlaufende (Rolling) Updates - Werden für logische Änderungen am Code verwendet.
#### 2. Rolling updates - Used for logical changes to code.
```console
pnpm reload:server && pnpm pm2 logs
```
> [!NOTE] Wir führen fortlaufende Aktualisierungen des Codes, der Logik, mittels Pipelines durch. Du solltest diese Befehle nicht ausführen müssen. Sie dienen nur der Dokumentation.
> [!NOTE] We are handling rolling updates to code and logic via pipelines. Du solltest diese Befehle nicht ausführen müssen. Sie dienen nur der Dokumentation.
#### 3. Updating Node
@@ -530,7 +530,7 @@ pnpm reload:server && pnpm pm2 logs
pnpm pm2 update
```
## Arbeiten an Client-Instanzen
## Work on Client Instances
1. Install build tools for node binaries (`node-gyp`) etc.
@@ -538,7 +538,7 @@ pnpm pm2 update
sudo apt install build-essential
```
### Erste Installation
### Erstinstallation
Bereitstellung von VMs mit dem Code
@@ -586,13 +586,13 @@ pm2 logs
pm2 monit
```
### Aktualisieren von Instanzen (Wartung)
### Instanzen aktualisieren (Wartung)
Codeänderungen müssen von Zeit zu Zeit auf die API-Instanzen übertragen werden. Es kann ein fortlaufendes Update oder ein manuelles Update sein. Letzteres ist wichtig, wenn du Abhängigkeiten ändern oder Umgebungsvariablen hinzufügen.
> [!ATTENTION] Automatisierte Pipelines können derzeit keine Aktualisierungen von Abhängigkeiten vornehmen. Wir müssen eine manuelle Aktualisierung durchführen, bevor die Deployment-Pipeline ausgeführt wird.
#### 1. Manual Updates - Used for updating dependencies, env variables.
#### 1. Manuelle Updates - Werden für die Aktualisierung von Abhängigkeiten und Umgebungsvariablen verwendet.
1. Stop all instances
@@ -608,7 +608,7 @@ Codeänderungen müssen von Zeit zu Zeit auf die API-Instanzen übertragen werde
pm2 start all --update-env && pm2 logs
```
#### 2. Rolling updates - Used for logical changes to code.
#### 2. Fortlaufende (Rolling) Updates - Werden für logische Änderungen am Code verwendet.
```console
pm2 reload all --update-env && pm2 logs
@@ -616,13 +616,13 @@ pm2 reload all --update-env && pm2 logs
> [!NOTE] Wir führen fortlaufende Aktualisierungen des Codes, der Logik, mittels Pipelines durch. Du sollte diese Befehle nicht ausführen müssen. Sie dienen nur der Dokumentation.
## Arbeiten an Chat-Servern
## Work on Chat Servers
Unsere Chatserver sind mit einer HA-Konfiguration verfügbar, die [in den Rocket.Chat-Dokumenten empfohlen wird](https://docs.rocket.chat/installation/docker-containers/high-availability-install). Die Datei `docker-compose` dafür ist [hier](https://github.com/freeCodeCamp/chat-config) verfügbar.
Wir stellen redundante NGINX-Instanzen bereit, die ihrerseits einen Load Balancing (Azure Load Balancer) vor dem Rocket.Chat-Cluster aufweisen. Die NGINX-Konfigurationsdatei ist [hier](https://github.com/freeCodeCamp/chat-nginx-config) verfügbar.
### Erstinstallation
### First Install
Bereitstellen von VMs mit dem Code
@@ -669,7 +669,7 @@ Bereitstellen von VMs mit dem 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.
@@ -695,7 +695,7 @@ Bereitstellen von VMs mit dem Code
docker-compose up -d
```
### Logging und Monitoring
### Logging and Monitoring
1. Check status for NGINX service using the below command:
@@ -709,7 +709,7 @@ Bereitstellen von VMs mit dem Code
docker ps
```
### Instanzen aktualisieren (Wartung)
### Updating Instances (Maintenance)
**NGINX Cluster:**
@@ -790,9 +790,9 @@ Konfigurationsänderungen für unsere NGINX-Instanzen werden auf GitHub gepflegt
Select yes (y) to remove everything that is not in use. This will remove all stopped containers, all networks and volumes not used by at least one container, and all dangling images and build caches.
## Arbeit an Contributor Tools
## Work on Contributor Tools
### Updates bereitstellen
### Deploy Updates
ssh in die VM (gehostet auf Digital Ocean).
@@ -804,7 +804,7 @@ pnpm run build
pm2 restart contribute-app
```
## Update von Node.js-Versionen auf VMs
## Updating Node.js Versions on VMs
Liste die aktuell installierten node & npm Versionen auf
@@ -828,7 +828,7 @@ nvm install --lts --reinstall-packages-from=default
npm ls -g --depth=0
```
Verändere die `Standard` Node.js Version zur aktuellen LTS (angeheftet an die letzte Hauptversion)
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 <version>
```
> [!ATTENTION] In Client-Anwendungen ist es nicht möglich, `pm2 resurrect` zu verwenden, um Shell-Skripte zwischen Node.js-Versionen wieder herzustellen. Setze stattdessen Prozesse von Grund auf neu auf. Dies sollte einfacher werden, wenn wir zu einem Docker-basierten Setup wechseln.
> [!ATTENTION] In Client-Anwendungen ist es nicht möglich, `pm2 resurrect` zu verwenden, um Shell-Skripte zwischen Node.js-Versionen wieder herzustellen. Setze stattdessen Prozesse von Grund auf neu auf. This should become nicer when we move to a docker-based setup.
>
> Wenn du PM2 für Prozesse verwendest, musst du auch die Anwendungen aufrufen und die Prozessliste für die automatische Wiederherstellung bei Neustarts speichern.
@@ -874,19 +874,19 @@ pm2 save
pm2 logs
```
## Installieren und Aktualisieren von Azure-Pipeline-Agents
## Installing and Updating Azure Pipeline Agents
Siehe: https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-linux?view=azure-devops und befolge die Anweisungen zum Stoppen, Entfernen und Neuinstallieren von Agents. Im Großen und Ganzen kannst du die hier aufgeführten Schritte befolgen.
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. Im Großen und Ganzen kannst du die hier aufgeführten Schritte befolgen.
Du benötigst einen PAT, den du hier finden kannst: https://dev.azure.com/freeCodeCamp-org/_usersSettings/tokens
### Installieren eines Agenten auf einem Einsatzziel
### Installing Agents on Deployment targets
Navigiere zu [Azure Devops](https://dev.azure.com/freeCodeCamp-org) und registriere den Agenten von Grund auf neu in den erforderlichen [Entwicklungsgruppen](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_machinegroup).
> [!NOTE] Du solltest die Skripte im Home-Verzeichnis ausführen und sicherstellen, dass kein anderes `azagent` Verzeichnis existiert.
### Agents aktualisieren
### Updating Agents
Derzeit müssen Agents zum Aktualisieren entfernt und neu konfiguriert werden. Dies ist erforderlich, damit sie die `PATH`-Werte und andere Systemumgebungsvariablen korrekt übernehmen können. Wir müssen dies zum Beispiel tun, um Node.js auf unseren Ziel-VMs zu aktualisieren.
@@ -924,7 +924,7 @@ Derzeit müssen Agents zum Aktualisieren entfernt und neu konfiguriert werden. D
Wenn du die oben genannten Schritte abgeschlossen hast, kannst du die gleichen Schritte wie bei der Installation des Agenten wiederholen.
# Handbuch - E-Mail Versand
## Flight Manual - Email Blast
Wir verwenden [ein CLI-Tool](https://github.com/freecodecamp/sendgrid-email-blast), um den wöchentlichen Newsletter zu versenden. Um dieses in Betrieb zu nehmen und den Prozess zu beginnen:
@@ -955,9 +955,9 @@ Wir verwenden [ein CLI-Tool](https://github.com/freecodecamp/sendgrid-email-blas
7. When the email blast is complete, verify that no emails have failed before destroying the droplets.
# Handbuch - Hinzufügen von Nachrichteninstanzen für neue Sprachen
## Flight Manual - Adding news instances for new languages
### Änderungen des Themes
### Theme Changes
Wir verwenden ein eigenes [Theme](https://github.com/freeCodeCamp/news-theme) für unsere Nachrichtenpublikation. Wenn du die folgenden Änderungen am Theme vornimmst, können neue Sprachen hinzugefügt werden.
@@ -968,6 +968,6 @@ Wir verwenden ein eigenes [Theme](https://github.com/freeCodeCamp/news-theme) f
5. In [`partials/i18n.hbs`](https://github.com/freeCodeCamp/news-theme/blob/main/partials/i18n.hbs), add scripts for the newly created config files.
6. Add the related language `day.js` script from [cdnjs](https://cdnjs.com/libraries/dayjs/1.10.4) to the [freeCodeCamp CDN](https://github.com/freeCodeCamp/cdn/tree/main/build/news-assets/dayjs/1.10.4/locale)
### Ghost Dashboard Änderungen
### Ghost Dashboard Changes
Aktualisiere die Publikations-Assets, indem du zum Ghost Dashboard > Einstellungen > Allgemein gehst und die [Icon](https://github.com/freeCodeCamp/design-style-guide/blob/master/assets/fcc-puck-500-favicon.png), das [Logo](https://github.com/freeCodeCamp/design-style-guide/blob/master/downloads/fcc_primary_large.png) und das [Cover](https://github.com/freeCodeCamp/design-style-guide/blob/master/assets/fcc_ghost_publication_cover.png) der Publikationen hochlädst.

View File

@@ -4,23 +4,23 @@ Wenn du Änderungen an JavaScript, CSS oder HTML vornimmst, die die Funktionalit
Wie man Cypress-Tests oder "Specs" schreibt, erfährst du in der offiziellen [Dokumentation](https://docs.cypress.io/guides/getting-started/writing-your-first-test.html) von Cypress.
## Wo du einen Test hinzufügen kannst
## Where to Add a Test
- Cypress-Tests befinden sich im Verzeichnis `./cypress`.
- Cypress-Tests für ein Studienplanmodul befinden sich im entsprechenden Studienplanverzeichnis, d.h. `cypress/integration/learn/responsive-web-design/basic-css/index.js`.
## Wie man Tests durchführt
## How to Run Tests
> [!NOTE] Wenn du GitPod verwendest, lies bitte [Cypress-GitPod Setup](how-to-add-cypress-tests.md#cypress-gitpod-setup)
### 1. Sicherstellen, dass MongoDB und Client-Anwendungen ausgeführt werden
### 1. Ensure that MongoDB and Client Applications are Running
- [Starte MongoDB und erstelle die Datenbank](how-to-setup-freecodecamp-locally.md#step-3-start-mongodb-and-seed-the-database)
- [Starte die freeCodeCamp Client-Anwendung und den API-Server](how-to-setup-freecodecamp-locally.md#step-4-start-the-freecodecamp-client-application-and-api-server)
### 2. Führe die Cypress-Tests durch
### 2. Run the Cypress Tests
Um Tests mit Produktions-Builds durchzuführen, ersetze unten `dev` durch `prd`.
@@ -39,7 +39,7 @@ Um Tests mit Produktions-Builds durchzuführen, ersetze unten `dev` durch `prd`.
For example:
```console
pnpm run cypress -- run --spec=cypress/e2e/default/landing.js
pnpm run cypress -- run --spec=cypress/e2e/default/landing.ts
```
- Um einen Entwicklungs-Build zu erstellen, starte den Entwicklungsserver und führe alle vorhandenen Cypress-End-to-End-Tests aus:

View File

@@ -7,11 +7,11 @@
## Einführung
Für einige E-Mail-Workflows, wie z. B. die Aktualisierung der E-Mail eines Nutzers, muss der Backend-Api-Server ausgehende E-Mails versenden. MailHog ist eine Alternative zur Nutzung eines E-Mail-Dienstleisters, um echte E-Mails zu versenden. Es ist ein Entwickler-Tool für E-Mail-Tests, das die von deiner freeCodeCamp-Instanz gesendeten E-Mails abfängt.
Some email workflows, like updating a user's email, require the back-end api-server to send outgoing emails. MailHog ist eine Alternative zur Nutzung eines E-Mail-Dienstleisters, um echte E-Mails zu versenden. Es ist ein Entwickler-Tool für E-Mail-Tests, das die von deiner freeCodeCamp-Instanz gesendeten E-Mails abfängt.
## MailHog installieren
MailHog kann auf macOS, Windows und Linux installiert oder über Docker verwendet werden
MailHog can be installed on macOS, Windows, and Linux or used via Docker
<details><summary>MailHog mit Docker installieren</summary>

View File

@@ -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 = {
## Aktivieren von lokalisierten Videos
Für die Videoaufgaben musst du ein paar Dinge ändern. Füge zunächst das neue Gebietsschema zur GraphQL-Abfrage in der Datei `client/src/templates/Challenges/video/Show.tsx` ein. Zum Beispiel, indem man Dothraki zur Abfrage hinzufügt:
Für die Videoaufgaben musst du ein paar Dinge ändern. First, add the new locale to the GraphQL query in the `client/src/templates/Challenges/video/Show.tsx` file. Zum Beispiel, indem man Dothraki zur Abfrage hinzufügt:
```tsx
query VideoChallenge($slug: String!) {
@@ -256,7 +256,7 @@ export interface VideoLocaleIds {
}
```
Aktualisiere schließlich das Challenge-Schema in `curriculum/schema/challengeSchema.js`.
And finally, update the challenge schema in `curriculum/schema/challengeSchema.js`.
```js
videoLocaleIds: Joi.when('challengeType', {

View File

@@ -1,4 +1,4 @@
# Wie du bei Videoaufgaben helfen kannst
# How to Help with Video Challenges
Videoaufgaben sind eine neue Art von Aufgaben im freeCodeCamp-Studienplan.
@@ -54,18 +54,18 @@ Mehr Antworten
Die Anzahl der richtigen Antworten gehört hierher.
````
## Erstelle Fragen für Videoaufgaben
## Creating Questions for Video Challenges
### Zugriff auf die Markdown-Dateien der Videoaufgaben
### Access the Video Challenge Markdown Files
Du findest die Markdown-Dateien für die Videoaufgaben auf den folgenden Seiten im Studienplan:
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/main/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course)
- [TensorFlow 2.0 Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/11-machine-learning-with-python/tensorflow)
- [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/08-data-analysis-with-python/numpy)
- [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work)
Wähle eine Aufgaben-Markdown-Datei aus den obigen Optionen aus.
Pick a challenge markdown file from the options above.
### Überfliege das Video, das mit der Aufgabe verbunden ist, und erstelle eine Multiple-Choice-Frage.
@@ -87,9 +87,9 @@ Im obigen Beispiel lautet die URL https://www.youtube.com/watch?v=nVAaxZ34khk
Überfliege das YouTube-Video mit dieser `videoId` und überlege dir eine Multiple-Choice-Frage, die auf dem Inhalt des Videos basiert.
### Füge die Frage zur Markdown-Datei hinzu.
### Add the Question to the Markdown File
Du kannst die Frage lokal oder über die Benutzeroberfläche von GitHub hinzufügen. Um die Frage lokal hinzuzufügen, musst du [freeCodeCamp lokal einrichten](how-to-setup-freecodecamp-locally.md). Du kannst die Datei auch auf GitHub finden und auf den Button "Bearbeiten" klicken, um die Frage direkt in deinem Browser hinzuzufügen.
You can add the question locally or using the GitHub interface. Um die Frage lokal hinzuzufügen, musst du [freeCodeCamp lokal einrichten](how-to-setup-freecodecamp-locally.md). Du kannst die Datei auch auf GitHub finden und auf den Button "Bearbeiten" klicken, um die Frage direkt in deinem Browser hinzuzufügen.
Wenn eine Frage noch nicht zu einer bestimmten Videoaufgabe hinzugefügt wurde, wird sie mit der folgenden Standardfrage versehen:
@@ -193,6 +193,6 @@ print(height/3)
Für weitere Beispiele kannst du dir die Markdown-Dateien für den folgenden Videokurs ansehen. Zu allen Aufgaben gibt es bereits Fragen: [Python für Jedermann Kurs](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody)
## Öffne einen Pull-Request
## Open a Pull Request
Nachdem du eine oder mehrere Fragen erstellt hast, kannst du die Änderungen in einem neuen Branch übertragen und [einen Pull-Request](how-to-open-a-pull-request.md) öffnen.

View File

@@ -17,7 +17,7 @@ Einige Beispiele hierfür sind:
> [!NOTE] Deine Öffentlichkeitsarbeit sollte sich nur auf Änderungen des englischen Lehrplans beziehen. Lese stattdessen [diesen Leitfaden](index.md#translations), um zu Übersetzungen beizutragen.
## Bereite einen guten PR-Titel vor
## Prepare a Good PR Title
Wir empfehlen, [konventionelle Titel und Nachrichten](https://www.conventionalcommits.org/) für Commits und Pull Requests zu verwenden. Die Konvention hat das folgende Format:
@@ -93,7 +93,7 @@ Einige Beispiele für gute PR-Titel wären:
- Wenn dein PR das Verhalten einer Seite beeinflusst, sollte er von entsprechenden [Cypress Integrationstests](how-to-add-cypress-tests.md) begleitet werden.
## Feedback zu Pull-Requests
## Feedback on Pull Requests
> :tada: für die Erstellung eines PR und vielen Dank, dass du dir die Zeit genommen haben, einen Beitrag zu leisten.
@@ -103,13 +103,13 @@ Und wie immer kannst du deine Fragen in der [Kategorie "Contributors" in unserem
> [!TIP] Wenn du mehr Pull-Requests beisteuern willst, empfehlen wir dir, die [Richtlinien für Änderungen und Synchronisierung](how-to-setup-freecodecamp-locally.md#making-changes-locally) zu lesen, damit du deinen Fork nicht löschen musst.
## Konflikte bei Pull-Requests
## Conflicts on a Pull Request
Es kann zu Konflikten kommen, weil viele Mitwirkende an dem Repository arbeiten und Änderungen deinen PR zerstören können, der noch auf eine Überprüfung und Zusammenführung wartet.
In den meisten Fällen brauchst du keinen Rebase, da wir alle Commits vernichten. Wenn jedoch ein Rebase verlangt wird, solltest du wie folgt vorgehen.
### Für die üblichen Fehlerbehebungen und Funktionen
### For Usual Bug Fixes and Features
Wenn du an regulären Bugs und Features auf unserem Entwicklungszweig `main` arbeitest, kannst du einen einfachen Rebase durchführen:
@@ -138,7 +138,7 @@ Wenn du an regulären Bugs und Features auf unserem Entwicklungszweig `main` arb
git push --force origin <pr-branch>
```
### Für anstehende Studienpläne und Features
### For Upcoming Curriculum and Features
Wenn du an Funktionen für unseren kommenden `next-*`-Branch arbeitest, musst du Rosinenpickerei betreiben:

View File

@@ -39,7 +39,7 @@ Nach dem Korrekturlesen einer Datei sind keine weiteren Aktionen erforderlich.
> [!NOTE] Wenn du einen String in der Korrekturansicht genehmigst, wird er als vollständig markiert und bei unserem nächsten Pull von Crowdin auf GitHub heruntergeladen.
## Korrekturleser werden
## Becoming a Proofreader
Wenn du Fragen hast oder daran interessiert bist, Korrekturleser zu werden, kannst du dich gerne in unserem [Contributors Chat Room](https://discord.gg/PRyKn3Vbay) an uns wenden. In der Regel gewähren wir dir Zugang zum Korrekturlesen, wenn du schon eine Weile im freeCodeCamp mitarbeitest.
@@ -47,7 +47,7 @@ Unser Mitarbeiterteam und unsere Community-Moderatoren sind immer auf der Suche
> [!NOTE] Crowdin ermöglicht es dir, deine Übersetzungen zu genehmigen. Im Allgemeinen ist es am besten, wenn du deine vorgeschlagenen Übersetzungen von einem anderen Korrekturleser durchsehen lässt, um sicherzugehen, dass keine Fehler enthalten sind.
## Einen Kanal im Chat für eine Weltsprache erstellen
## Creating a Channel on Chat for a World Language
In der Regel empfehlen wir dir, den [Contributors Chat](https://discord.gg/PRyKn3Vbay) für die gesamte Kommunikation zu nutzen. Wenn jedoch das Team der freiwilligen Übersetzer für eine bestimmte Sprache wächst, können wir in Erwägung ziehen, einen zusätzlichen Break-Out-Channel für diese Sprache einzurichten.

View File

@@ -1,6 +1,6 @@
Follow these guidelines for setting up a development environment for freeCodeCamp. Das ist sehr empfehlenswert, wenn du regelmäßig einen Beitrag leisten willst.
## 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
<img src="https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/main/docs/images/github/how-to-fork-freeCodeCamp.gif" alt="How to fork freeCodeCamp on GitHub" />
</details>
## 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
#### Schritt 1: Einrichten der Umgebungsvariablendatei
#### 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.
#### Schritt 2: Abhängigkeiten installieren
#### 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
```
#### Schritt 3: MongoDB starten und die Datenbank initialisieren
#### 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
```
#### Schritt 4: Starte die freeCodeCamp Client-Anwendung und den 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 <http://localhost:3000/explorer> 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.

View File

@@ -1,12 +1,12 @@
Folge dieser Anleitung, um die freeCodeCamp mobile App lokal auf deinem System einzurichten. Dies ist sehr empfehlenswert, wenn du regelmäßig einen Beitrag leisten willst.
Für einige der Arbeitsabläufe - wie das Beheben von Fehlern in der Codebasis - musst du die freeCodeCamp-App lokal ausführen.
Some of the contribution workflows like fixing bugs in the codebase need you to run the freeCodeCamp app locally.
### Wie du deinen lokalen Rechner vorbereitest
### How to Prepare your Local Machine
Installiere zunächst die erforderliche Software für dein Betriebssystem.
#### Voraussetzungen:
#### Prerequisites
| Voraussetzung | Version | Notizen |
| --------------------------------------------- | ------- | ------------------------------------------------------------- |
@@ -30,9 +30,9 @@ Sobald du die notwendigen Ressourcen installiert hast, musst du deine Entwicklun
1. Installiere [Git](https://git-scm.com/) oder deinen bevorzugten Git-Client, falls du das nicht schon getan hast. Aktualisiere die neueste Version; die Version, die mit deinem Betriebssystem mitgeliefert wurde, ist möglicherweise veraltet.
2. Richte [Android Studio](https://developer.android.com/studio) und [Android Emulatoren](https://developer.android.com/studio/run/managing-avds) mit der neuesten Android-Version ein. Wir empfehlen die Verwendung des Pixel 3a XL und Nexus One (für die Emulation kleinerer Bildschirme).
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. Wir empfehlen die Verwendung des Pixel 3a XL und Nexus One (für die Emulation kleinerer Bildschirme).
3. (Optional für MacOS) Richte Xcode und den iOS-Simulator mit der neuesten veröffentlichten iOS-Version ein.
3. (Optional for MacOS) Set up Xcode and iOS Simulator with the latest released iOS version.
4. (Optional, aber empfohlen) [Richte einen SSH-Schlüssel](https://help.github.com/articles/generating-an-ssh-key/) für GitHub ein.
@@ -40,7 +40,7 @@ Sobald du die notwendigen Ressourcen installiert hast, musst du deine Entwicklun
Wir empfehlen dringend die Verwendung von [Visual Studio Code](https://code.visualstudio.com/) oder Android Studio. Wir empfehlen auch die Installation der offiziellen [Erweiterungen](https://docs.flutter.dev/get-started/editor?tab=vscode).
## Forke das Repository auf GitHub
## Fork the Repository on GitHub
[Forking](https://help.github.com/articles/about-forks/) ist ein Schritt, bei dem du deine eigene Kopie des Repositorys (auch bekannt als _Repo_) auf GitHub erhältst.
@@ -58,9 +58,9 @@ Dies ist wichtig, da es dir ermöglicht, an deiner eigenen Kopie der freeCodeCam
3. Nachdem das Repository geforkt wurde, gelangst du zu deiner Kopie des Repositorys unter `https://github.com/YOUR_USER_NAME/mobile` (`YOUR_USER_NAME` würde durch deinen GitHub-Benutzernamen ersetzt werden)
## Klone deinen Fork von GitHub
## Clone your Fork from GitHub
Beim [Klonen](https://help.github.com/articles/cloning-a-repository/) **downloadest ** du eine Kopie eines Repositorys von einem `remote`- Ort, der entweder dir oder einer anderen Person gehört. In deinem Fall ist dieser Remote-Speicherort dein `Fork` des freeCodeCamp-Repositorys, das unter `https://github.com/YOUR_USER_NAME/mobile` verfügbar sein sollte. (`YOUR_USER_NAME` wird durch deinen GitHub-Benutzernamen ersetzt.)
Beim [Klonen](https://help.github.com/articles/cloning-a-repository/) **downloadest ** du eine Kopie eines Repositorys von einem `remote`- Ort, der entweder dir oder einer anderen Person gehört. 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` wird durch deinen GitHub-Benutzernamen ersetzt.)
Führe diese Befehle auf deinem lokalen Rechner aus:
@@ -78,11 +78,11 @@ Dadurch wird das gesamte freeCodeCamp mobile Repository in dein Projektverzeichn
Hinweis: `--depth=1` erstellt einen oberflächlichen Klon deines Forks, der nur den jüngsten Verlauf/Commit enthält.
## Synchronisierung vom übergeordneten System konfigurieren
## Set up Syncing from Parent
Jetzt, wo du eine Kopie deines Forks heruntergeladen hast, musst du einen `upstream` zum übergeordneten Repository einrichten.
[Wie bereits erwähnt](#fork-the-repository-on-github), wird das Haupt-Repository als `upstream`-Repository bezeichnet. Dein Fork wird als `origin`-Repository bezeichnet.
[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.
Du benötigst eine Referenz von deinem lokalen Klon auf das `upstream`-Repository zusätzlich zum `origin`-Repository. Auf diese Weise kannst du Änderungen aus dem Haupt-Repository synchronisieren, ohne dass du wiederholt forken und klonen musst.
@@ -113,7 +113,7 @@ Du benötigst eine Referenz von deinem lokalen Klon auf das `upstream`-Repositor
upstream https://github.com/freeCodeCamp/mobile.git (push)
```
## freeCodeCamp mobile App lokal ausführen
## Running freeCodeCamp Mobile App Locally
Jetzt, da du eine lokale Kopie der mobilen Anwendung hast, kannst du die folgenden Anweisungen befolgen, um sie lokal auszuführen.
@@ -123,11 +123,11 @@ Und wie immer kannst du Fragen in der [Kategorie 'Contributors' in unserem Forum
> [!NOTE] Das Verzeichnis `mobile` enthält zwei Ordner, nämlich `mobile-api` und `mobile-app`. `mobile-api` enthält den API-Code, der für die Bereitstellung der Podcasts verwendet wird. `mobile-app` enthält die Flutter-App. Dort solltest du dich befinden, wenn du die folgenden Schritte befolgst.
### Konfigurieren der Abhängigkeiten
### Configuring Dependencies
#### Schritt 1: Einrichten der Umgebungsvariablendatei
#### Step 1: Set Up the Environment Variable File
Die Standard-API-Schlüssel und Umgebungsvariablen sind in der Datei `sample.env` gespeichert. Diese Datei muss in eine neue Datei namens `.env` kopiert werden, auf die während des Installationsschritts dynamisch zugegriffen wird. Denke daran, das Verzeichnis in `mobile-app` zu ändern, bevor du die folgenden Befehle ausführst.
Die Standard-API-Schlüssel und Umgebungsvariablen sind in der Datei `sample.env` gespeichert. This file needs to be copied to a new file named `.env` which is accessed dynamically during the installation step. Denke daran, das Verzeichnis in `mobile-app` zu ändern, bevor du die folgenden Befehle ausführst.
```console
# Erstelle eine Kopie der "sample.env" und benenne sie ".env".
@@ -172,9 +172,9 @@ flutter run
> [!TIP] Wenn du VSCode oder Android Studio verwendest, kannst du die App ganz einfach starten, ohne Terminalbefehle ausführen zu müssen. Mehr Informationen dazu [hier](https://docs.flutter.dev/get-started/test-drive).
## Änderungen lokal vornehmen
## Making Changes Locally
Du kannst jetzt Änderungen an Dateien vornehmen und deine Änderungen an deinen lokalen Klon deines Forks übertragen.
You can now make changes to files and commit your changes to the local clone of your fork.
Folge diesen Schritten:
@@ -225,7 +225,7 @@ Folge diesen Schritten:
git push origin main --force
```
Du kannst überprüfen, ob dein aktueller main mit dem upstream/main übereinstimmt, indem du einen diff durchführst:
You can validate that your current main matches the upstream/main by performing a diff:
```console
git diff upstream/main
@@ -243,7 +243,7 @@ Folge diesen Schritten:
git checkout -b fix/update-guide-for-xyz
```
Dein Zweigname sollte mit `fix/`, `feat/`, `docs/` usw. beginnen. Vermeide die Verwendung von Issue-Nummern in Zweigen. Halte sie kurz, aussagekräftig und einzigartig.
Dein Zweigname sollte mit `fix/`, `feat/`, `docs/` usw. beginnen. Vermeide die Verwendung von Issue-Nummern in Zweigen. Keep them short, meaningful, and unique.
Einige Beispiele für gute Zweignamen sind:
@@ -392,11 +392,11 @@ Wenn du Probleme mit der Benutzeroberfläche oder Build-Fehler hast, kann eine B
flutter clean
```
### Probleme bei der Installation von Abhängigkeiten
### Issues Installing Dependencies
Wenn du bei der Installation der Abhängigkeiten Fehler erhältst, vergewissere dich bitte, dass du dich nicht in einem eingeschränkten Netzwerk befindest oder dass deine Firewall-Einstellungen den Zugriff auf die Ressourcen nicht verhindern.
Sei geduldig, denn die Ersteinrichtung kann je nach Netzwerkbandbreite eine Weile dauern.
Be patient as the first-time setup can take a while depending on your network bandwidth.
## Hilfe bekommen

View File

@@ -117,17 +117,17 @@ Node.js comes bundled with `npm`, which you can use to install `pnpm`:
npm install -g pnpm
```
## FreeCodeCamp lokal einrichten
## Set up freeCodeCamp Locally
Nachdem du nun die Voraussetzungen erfüllt hast, folge [unserem Leitfaden zur lokalen Einrichtung](how-to-setup-freecodecamp-locally.md), um freeCodeCamp zu klonen, zu installieren und lokal auf deinem Rechner einzurichten.
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]
>
> Bitte beachte, dass die Einrichtung der Cypress-Tests (und die damit verbundenen Anforderungen an die Benutzeroberfläche) derzeit noch nicht abgeschlossen ist. Du solltest immer noch in der Lage sein, an den meisten Teilen der Codebasis zu arbeiten.
> Please note, at this time the setup for Cypress tests (and related GUI needs) are a work in progress. Du solltest immer noch in der Lage sein, an den meisten Teilen der Codebasis zu arbeiten.
## Nützliche Links
- [Ein WSL2 Dev Setup mit Ubuntu 20.04, Node.js, MongoDB, VS Code und Docker](https://hn.mrugesh.dev/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - ein Artikel von Mrugesh Mohapatra (Staff Developer bei 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)
- Häufig gestellte Fragen zu:
- [Windows Subsystem für Linux](https://docs.microsoft.com/en-us/windows/wsl/faq)
- [Docker Desktop für Windows](https://docs.docker.com/docker-for-windows/faqs)

View File

@@ -1,6 +1,6 @@
# So übersetzt du die Ressourcen von freeCodeCamp
## Bereite dich auf die Teilnahme vor
## Prepare yourself for Contributions
> Die freeCodeCamp Lokalisierungs-Roadmap - Es gibt keine Geschwindigkeitsbegrenzungen
@@ -44,7 +44,7 @@ Wir bitten dich nur um Verständnis für die folgenden Punkte:
## Überblick über Crowdin
Unser Traum ist es, dich mit den nötigen Ressourcen auszustatten, damit du lernen kannst, egal welche Weltsprache du sprichst. Um uns bei diesem enormen Aufwand zu helfen, haben wir unsere Open-Source-Code-Basis & Lehrplan mit [Crowdin](https://crowdin.com/) integriert - ein Tool, das uns bei der Lokalisierung unserer Code-Basis hilft.
Unser Traum ist es, dich mit den nötigen Ressourcen auszustatten, damit du lernen kannst, egal welche Weltsprache du sprichst. 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] Wir verwenden ein anderes Tool und einen anderen Arbeitsablauf für die Übersetzung von [Nachrichtenartikeln](https://www.freecodecamp.org/news). Wenn du an der Übersetzung von Artikeln interessiert bist, lese [diese Ankündigung](https://www.freecodecamp.org/german/news/freecodecamp-in-deine-muttersprache-uebersetzen/) und wende dich an deinen Language Lead.
@@ -60,7 +60,7 @@ Der Übersetzungsworkflow ist in zwei Hauptaktivitäten unterteilt:
> [!WARNING] Wir verwenden GitHub nicht mehr, um Dateien direkt zu übersetzen. Wenn du wieder mitarbeiten möchtest, gehe stattdessen zu unserer [Übersetzungsplattform](https://translate.freecodecamp.org/).
## Erste Schritte
## Getting Started
Zuerst solltest du in unserem [Diskord](https://discord.gg/PRyKn3Vbay) "Hallo" sagen. Wir posten regelmäßig Updates über Übersetzungsressourcen und beantworten dort deine Fragen.
@@ -145,7 +145,7 @@ Die Übersetzung der Dokumentation für die Mitarbeit ist ein ähnlicher Prozess
> [!NOTE] Unsere Dokumentation wird von `docsify` unterstützt, und wir haben ein spezielles Parsing für Nachrichtenboxen wie diese hier. Wenn du Strings siehst, die mit `[!NOTE]`, `[!WARNING]` oder `[!TIP]` beginnen, solltest du diese Wörter NICHT übersetzen.
### Wie man Dokumentation mit internen Links übersetzt
### How to Translate Documentation with Internal Links
Wenn du an der Übersetzung der Dokumentation arbeitest, achte auf interne Links, die auf einen anderen Teil der Dokumentation verweisen.

View File

@@ -190,7 +190,7 @@ $ ObjectId()
ObjectId("5a474d78df58bafeb3535d34")
````
Das Ergebnis ist eine neue ID, zum Beispiel `5a474d78df58bafeb3535d34` oben.
The result is a new id, for example, `5a474d78df58bafeb3535d34` above.
Sobald du deine ID hast, fügst du sie in die Markdown-Datei als `id`-Feld am Anfang ein, z. B.
@@ -243,7 +243,7 @@ Wenn du länger als zwei Minuten brauchst, um die Aufgabe zu lösen, hast du zwe
- vereinfache die Aufgabe, oder
- Teile die Aufgabe in zwei Aufgaben auf.
Die 2-Minuten-Regel zwingt dich, als Aufgabenersteller, deine Anweisungen kurz und präzise zu formulieren, deinen Startcode klar zu formulieren und deine Tests eindeutig zu gestalten.
The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straightforward.
Wir verfolgen, wie lange die Teilnehmer brauchen, um die Aufgaben zu lösen, und nutzen diese Informationen, um Aufgaben zu identifizieren, die vereinfacht oder aufgeteilt werden müssen.
@@ -267,7 +267,7 @@ Verwende `parseInt`, um die Variable `realNumber` in eine Integerzahl umzuwandel
```
- Verweise auf Dateinamen und Pfadverzeichnisse (z. B. `package.json`, `src/components`) sollten in `` \` ``-Backticks eingeschlossen werden.
- Mehrzeiligen Codeblöcken **muss eine Leerzeile vorangestellt werden**. Die nächste Zeile muss mit drei Backticks beginnen, unmittelbar gefolgt von einer der [unterstützten Sprachen](https://prismjs.com/#supported-languages). Um den Codeblock zu vervollständigen, musst du eine neue Zeile beginnen, die nur drei Backticks und **eine weitere Leerzeile** enthält. Siehe untenstehendes Beispiel:
- Mehrzeiligen Codeblöcken **muss eine Leerzeile vorangestellt werden**. Die nächste Zeile muss mit drei Backticks beginnen, unmittelbar gefolgt von einer der [unterstützten Sprachen](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**. Siehe untenstehendes Beispiel:
- Whitespace ist in Markdown wichtig, deshalb empfehlen wir, ihn in deinem Editor sichtbar zu machen.
**Hinweis:** Wenn du einen Beispielcode in YAML verwendest, benutze `yaml` anstelle von `yml` für die Sprache rechts von den Backticks.
@@ -283,10 +283,10 @@ Im Folgenden findest du ein Codebeispiel:
````
- Zusätzliche Informationen in Form einer Anmerkung sollten von Leerzeilen umgeben sein und wie folgt formatiert werden: "**Note:** Rest des Anmerkungstextes...".
- Wenn mehrere Notizen erforderlich sind, listest du alle Notizen in separaten Sätzen auf und verwendest das Format: **Notes:** Erster Text der Notiz. Zweiter Notiztext.`
- Verwende einfache Anführungszeichen, wo dies möglich ist.
- Wenn mehrere Notizen erforderlich sind, listest du alle Notizen in separaten Sätzen auf und verwendest das Format: **Notes:** Erster Text der Notiz. Second note text.`
- Use single quotes where applicable
**Note:** Das Äquivalent _Markdown_ sollte anstelle von _HTML_ Tags verwendet werden.
**Note:** The equivalent _Markdown_ should be used in place of _HTML_ tags.
## Tests schreiben
@@ -296,7 +296,7 @@ Unser Ziel ist es, den einzelnen Aspekt der Aufgabe zu vermitteln und zu prüfen
Aufgabentests können die Assertion-Bibliotheken von Node.js und Chai.js nutzen. Außerdem kann bei Bedarf auf den vom Benutzer erstellten Code in der Variable `code` zugegriffen werden. Zusätzlich stellt das Objekt `__helpers` mehrere Funktionen zur Verfügung, die das Schreiben von Tests vereinfachen. Die verfügbaren Funktionen sind in _client/src/utils/curriculum-helpers.ts_ definiert.
## Formatting seed code
## Formatting Seed Code
Here are specific formatting guidelines for the challenge seed code:
@@ -304,16 +304,16 @@ 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. Die Groß- und Kleinschreibung und die Abstände des Kommentarwörterbuchs müssen eingehalten werden. Das Kommentarwörterbuch sollte nicht ohne vorherige Absprache mit dem Entwicklungsteam erweitert werden.
Die verwendeten Kommentare sollten ein Leerzeichen zwischen den Kommentarzeichen und dem eigentlichen Kommentar enthalten. Im Allgemeinen sollten Kommentare sparsam verwendet werden. Überlege dir immer, ob du die Beschreibung oder die Instruktionen einer Aufgabe umschreiben kannst, wenn du dadurch einen Kommentar im Startcode vermeiden kannst.
Beispiel für einen gültigen einzeiligen JavaScript-Kommentar:
Example of a valid single-line JavaScript comment:
```js
// Ändere nur den Code unterhalb dieser Zeile
// Only change code below this line
````
Beispiel für einen gültigen CSS-Kommentar:
@@ -366,7 +366,7 @@ class MyComponent extends React.Component {
}
```
### Übersetzung der Kommentare im Startcode
### Translation of Seed Code Comments
Für jede Sprache gibt es ein eigenes Kommentarwörterbuch. 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`. Jedes Wörterbuch besteht aus einem Array von Objekten mit einer eindeutigen `id`-Eigenschaft und einer `text`-Eigenschaft. Nur der `text` sollte geändert werden, damit er die Übersetzung des entsprechenden englischen Kommentars enthält.
@@ -388,16 +388,16 @@ Wenn du ein Problem in einem bestehenden Thema für Tipps/Lösungen findest, kan
### Neue Aufgabenhinweise/Lösungsthemen hinzufügen
Führe die folgenden Schritte aus, wenn du ein neues Thema mit Tipps und Lösungen für Aufgaben hinzufügst.
Take the following steps when adding a new challenge hints/solutions-related topic.
1. Beginne mit den gleichen Schritten wie beim Erstellen eines neuen Themas, aber schau dir die nächsten Schritte zum Erstellen des Titels an.
2. Der Titel des Themas sollte mit `freeCodeCamp Challenge Guide:` beginnen und mit dem eigentlichen Titel der Studienplanaufgabe verkettet werden. Wenn die Aufgabe zum Beispiel "`Chunky Monkey`" heißt, würde der Titel des Themas lauten "`freeCodeCamp Challenge Guide: Chunky Monkey`".
3. `camperbot` sollte der Eigentümer dieser Themen/Posts sein. Du musst also einen Admin bitten, den Eigentümer des Hauptposts auf `camperbot` zu ändern.
4. Sobald das neue Thema erstellt ist, wird eine Forenthemen-ID erstellt. Sie befindet sich am Ende der URL des Forenthemas. Diese ID muss dem Frontmatter der Studienplanaufgabendatei über den normalen Pull-Request-Prozess hinzugefügt werden, damit der `Erhalte einen Tipp` Button auf das Thema verlinkt.
### Richtlinien für den Inhalt von Hinweisen und Lösungsthemen
### Guidelines for Content of Hints and Solutions Topics
Wenn du eine Lösung für ein Studienplanaufgabenthema vorschlägst, muss der vollständige Code hinzugefügt werden. Dies beinhaltet den gesamten ursprünglichen Startcode sowie alle Änderungen, die nötig sind, um alle Aufgabentests zu bestehen. Die folgende Vorlage sollte verwendet werden, wenn du neue Hinweise/Lösungen für Themen erstellst:
When proposing a solution for a curriculum challenge-related Guide topic, the full code must be added. Dies beinhaltet den gesamten ursprünglichen Startcode sowie alle Änderungen, die nötig sind, um alle Aufgabentests zu bestehen. Die folgende Vorlage sollte verwendet werden, wenn du neue Hinweise/Lösungen für Themen erstellst:
````md
# Aufgabentitel hier eintragen

View File

@@ -1,10 +1,10 @@
# Wie du an einer lokalisierten Client-Webapp arbeitest
# How to Work on Localized Client Webapp
Die React-basierte Client-Web-App, die unsere Lernplattform betreibt, wurde mit Gatsby entwickelt. Sie wird mit [react-i18next](https://react.i18next.com/) und [i18next](https://www.i18next.com/) in verschiedene Weltsprachen übersetzt.
The React-based client web app that powers our learning platform is built using Gatsby. Sie wird mit [react-i18next](https://react.i18next.com/) und [i18next](https://www.i18next.com/) in verschiedene Weltsprachen übersetzt.
Du kannst mehr darüber erfahren, wie du die Client-Anwendung lokal für die Entwicklung einrichtest, indem du [unseren Leitfaden zur lokalen Einrichtung](how-to-setup-freecodecamp-locally.md) liest. Standardmäßig ist die Anwendung nur in Englisch verfügbar.
Du kannst mehr darüber erfahren, wie du die Client-Anwendung lokal für die Entwicklung einrichtest, indem du [unseren Leitfaden zur lokalen Einrichtung](how-to-setup-freecodecamp-locally.md) liest. By default, the application is available only in English.
Sobald du das Projekt lokal eingerichtet hast, solltest du dieser Dokumentation folgen können, um den Client in der Sprache deiner Wahl aus der Liste der verfügbaren Sprachen auszuführen.
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.
Das kann hilfreich sein, wenn du an einem Feature arbeitest, das speziell auf die Lokalisierung abzielt und du zum Beispiel die Beschriftung eines Buttons in einer anderen Sprache validieren musst.
@@ -14,7 +14,7 @@ Wir wollen verstehen, wie die i18n-Frameworks und -Werkzeuge funktionieren.
## Dateistruktur
Die meisten Dateien für die Übersetzung der Plattform befinden sich im Ordner [`client/i18n`](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/client/i18n). Für jede Sprache gibt es ein Verzeichnis, das JSON-Dateien mit den Übersetzungen enthält.
Most of the files for translating the platform are located in the [`client/i18n`](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/client/i18n) folder. Für jede Sprache gibt es ein Verzeichnis, das JSON-Dateien mit den Übersetzungen enthält.
```console
config
@@ -55,11 +55,11 @@ Die meisten Dateien für die Übersetzung der Plattform befinden sich im Ordner
└── 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.
**Dateien, die auf unserer Übersetzungsplattform übersetzt wurden:**
- Die Datei `translations.json` enthält den Großteil des Textes, der auf den Elementen der Benutzeroberfläche erscheint. Die Schlüssel werden in der Codebasis verwendet, um den richtigen Text für die eingestellte Sprache zu erhalten. Diese Datei muss in allen Sprachen die exakt gleichen Schlüssel haben.
- Die Datei `translations.json` enthält den Großteil des Textes, der auf den Elementen der Benutzeroberfläche erscheint. Die Schlüssel werden in der Codebasis verwendet, um den richtigen Text für die eingestellte Sprache zu erhalten. This file needs to have the same keys in all languages.
- Die Datei `intro.json` enthält die Schlüssel-Werte-Paare für den Einleitungstext auf den Zertifikatseiten.
@@ -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).
## Das Testen der Client-App in einer Weltsprache
## 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'
<p>Welcome to <strong>freeCodeCamp</strong></p>
```
Du kannst den Schlüssel wie im obigen Beispiel innerhalb der Komponenten-Tags platzieren, wenn der Text "einfache" Tags ohne Attribute enthält. `br`, `strong`, `i` und `p` sind die Standardwerte, aber diese Liste kann in der i18n-Konfiguration erweitert werden.
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` und `p` sind die Standardwerte, aber diese Liste kann in der i18n-Konfiguration erweitert werden.
### Verschachtelte komplexe Elemente
@@ -264,7 +264,7 @@ Die englische Datei ist die "Quelle der Wahrheit" für alle `.json`-Dateien, die
Es wäre auch schön, wenn die Schlüssel in allen Dateien die gleiche Reihenfolge hätten. Versuche außerdem, alle Satzzeichen, Abstände, Anführungszeichen usw. in den JSON-Dateien und nicht in den Komponenten oder Serverdateien zu platzieren.
> [!NOTE] Der Unterstrich (`_`) ist ein reserviertes Zeichen für Schlüssel in den clientseitigen Dateien. In der [Dokumentation](https://www.i18next.com/translation-function/plurals) erfährst du, wie sie verwendet werden.
> [!NOTE] The underscore (`_`) is a reserved character for keys in the client-side files. In der [Dokumentation](https://www.i18next.com/translation-function/plurals) erfährst du, wie sie verwendet werden.
## Hilfreiche Dokumentation

View File

@@ -10,7 +10,7 @@ In dieser Anleitung erfährst du, wie du mit unserem Aufgaben-Editor an den Übu
### Starten des Editors
Um den Editor zu starten, stelle sicher, dass du dich im Stammverzeichnis von freeCodeCamp befindest. 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.
Der Client läuft auf Port `3300`, so dass du ihn unter `http://localhost:3300` erreichen kannst. Die API läuft auf Port `3200`, um Konflikte mit dem Lernclient und dem Server zu vermeiden. Dies ermöglicht es dir, die freeCodeCamp-Anwendung gleichzeitig mit dem Editor laufen zu lassen, so dass du deine Änderungen lokal testen kannst.
@@ -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. Wechsle in das Verzeichnis des Projekts.
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. Wechsle in das Verzeichnis des Projekts.
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. Wechsle in das Verzeichnis des Projekts.
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. Wechsle in das Verzeichnis des Projekts.
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. Wechsle in das Verzeichnis des Projekts.
2. Run the following command:

View File

@@ -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)

View File

@@ -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
- Die Homepage wird aus der [`_coverpage.md`](_coverpage.md) erstellt.
- 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 <http://localhost:3400>

View File

@@ -1,8 +1,8 @@
Diese Seite beschreibt, wie du zu den freeCodeCamp-Tutorials und -Projekten beitragen kannst, die mit der CodeRoad VS Code-Erweiterung durchgeführt werden.
## Wie die Tutorials funktionieren
## How the Tutorials Work
Die freeCodeCamp-Tutorials, die CodeRoad verwenden, haben jeweils ihr eigenes Repo unter der freeCodeCamp GitHub-Organisation. Sie beginnen alle mit `learn-`. Zum Beispiel: `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. Sie beginnen alle mit `learn-`. Zum Beispiel: `https://github.com/freeCodeCamp/learn-bash-by-building-a-boilerplate/`.
Jedes Tutorial-Repo hat einen `main`-Branch und einen „Version“-Branch, z.B. `v1.0.0`.
@@ -18,7 +18,7 @@ Um Änderungen an den Commits in einem Versionsbranch vorzunehmen, musst du die
>
> Nimm niemals Änderungen an einem Versionsbranch vor, der sich in einem der freeCodeCamp-Repos befindet. Erstelle immer einen Neuen.
## Wie du dich beteiligen kannst
## How to Contribute
### Voraussetzungen
@@ -49,7 +49,7 @@ Befolge diese Anweisungen, um einen PR zu erstellen. Beachte dabei, dass die Anw
- Übertrage deine Änderungen mit `update json` als Nachricht
- Erstelle einen PR
### Änderungen an `main` testen
### Testing Changes on `main`
Wenn du deine Änderungen an `main` nach den obigen Anweisungen testen willst, befolge diese Anweisungen:
@@ -64,7 +64,7 @@ Die Datei `tutorial.json` sollte keine Änderungen an Commit-Hashes oder Step/Le
Denke auch daran, dass die Anleitungen in der Regel die Lektionen um sie herum als Kontext verwenden, also achte darauf, dass sie sinnvoll sind.
### Arbeiten an einem Versionsbranch
### Working on Version Branch
> [!WARNING]
>
@@ -91,12 +91,12 @@ Befolge diese Anweisungen, um eine neue Version zu erstellen:
- Erstelle einen PR für `main` mit deinem neuen `feat/version-X.X.Y`-Branch. Gib ihm einen Titel wie `Version X.X.Y ready for review`. Dies wird nicht zusammengeführt (merged), sondern dient nur dazu, die Prüfer wissen zu lassen, dass eine neue Version bereitsteht
- Danach werden deine Änderungen überprüft
### Änderungen an einem Versionsbranch testen
### Testing Changes to a Version Branch
- Befolge die Anweisungen auf dem [rdb-alpha Repo](https://github.com/freeCodeCamp/rdb-alpha), um einen Container zu starten
- Starte das Tutorial mit der Datei `tutorial.json` in dem Fork, in dem sich die Änderungen befinden. Achte darauf, dass du die Datei im `feat: Version-X.X.Y`-Branch verwendest und nicht im `main`-Branch
### Eine neue Version pushen
### Pushing a New Version
Bevor du eine neue Version veröffentlichst, schau dir den neuen `feat/version-vX.X.Y`-Branch (wird mit `main` zusammengeführt) auf dem Fork des Benutzers an. Vergewissere dich, dass die Datei `CHANGELOG.md` um die neuen Änderungen ergänzt wurde und dass die Version an den beiden Stellen der `coderoad.yaml` mit dem neuen Versionsbranch übereinstimmt.
@@ -121,7 +121,7 @@ Wenn du Schreibzugriff auf das freeCodeCamp-Repository hast, die Dateien `CHANGE
- Nachdem der PR zusammengeführt wurde, öffne das Tutorial, indem du den Anweisungen im [rdb-alpha repo](https://github.com/freeCodeCamp/rdb-alpha) folgst, um sicherzustellen, dass es richtig geladen wird und du einige Schritte durchlaufen kannst
- Wenn es bereits PRs für diese Version gibt, schließe sie
### Wie du zu einer früheren Version zurückkehrst
### How to Revert to a Previous Version
- Erstelle einen neuen Branch vom neuesten `main` mit `git checkout -b revert/to-version-X.X.X`
- Mach alle Commits in diesem Branch rückgängig, bis einschließlich des Commits der Version, die auf die Version folgt, zu der du zurückkehren willst. Du könntest zum Beispiel Commits haben, die wie folgt aussehen:

View File

@@ -2,9 +2,9 @@
Dieses Handbuch hilft dir dabei, die Tools für deine Lokalisierungsvorhaben einzurichten und zu nutzen.
## Wie du neue Mitwirkende zu Ghost einlädst
## How to Invite New Contributors to Ghost
Ghost ermöglicht es dir, Mitwirkende mit verschiedenen Berechtigungsstufen festzulegen.
Ghost allows you to set contributors with different levels of authorization.
Die meisten Ihrer Einladungen werden für die Stufe "Contributor " sein. Auf dieser Ebene kann der Benutzer Entwürfe erstellen. Wähle diese Rolle, wenn du einen neuen Übersetzer einlädst.
@@ -14,7 +14,7 @@ Auf der Ebene "Editor" hat der Benutzer Zugriff auf alle Entwürfe und kann sie
Die Stufe "Administrator" ist für freeCodeCamp-Mitarbeiter und Language Leads reserviert.
### Wie Artikel erstellt werden
### How are the Articles Built
Wir verwenden einen [JAMStack](https://www.google.com/search?q=what+is+jamstack)-basierten Ansatz zur Erstellung und Bereitstellung der Artikel. Diese Strategie sorgt für eine schnelle statische Website, die von einem CDN zwischengespeichert und bereitgestellt wird.
@@ -24,9 +24,9 @@ Dieser Prozess ist automatisiert und läuft regelmäßig ab. Wenn du jetzt etwas
Die aktuellen Zeitpläne und den Status kannst du hier einsehen: https://github.com/freeCodeCamp/news#build
## Wie man den Originalautor eines übersetzten Artikels erwähnt
## How to Mention the Original Author of a Translated Article
Der ursprüngliche Autor und der ursprüngliche Artikel werden automatisch verlinkt, indem dieser Code dem Abschnitt Code Injection -> head in den Entwurfs-Einstellungen auf Ghost hinzugefügt wird.
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
<script>
@@ -36,24 +36,24 @@ Der ursprüngliche Autor und der ursprüngliche Artikel werden automatisch verli
`Link` ist der Link zum Originalartikel.
## Wie man angesagte Artikel aktualisiert
## How to Update Trending Articles
> [!TIP] Die Artikel in der Fußzeile mindestens einmal im Monat zu ändern, führt zu einer Verbesserung der Google-Ergebnisse für die verlinkten Artikel.
> [!TIP] Changing the articles in the footer at least once a month means giving a boost to the linked articles on Google results.
Es gibt zwei Stellen, an denen du die angesagten Artikel ändern kannst.
- [Das Curriculum-Repository](https://github.com/freeCodeCamp/freeCodeCamp/)
- [Das CDN-Repository](https://github.com/freeCodeCamp/cdn)
Für jeden Artikel musst du einen kürzeren Titel erstellen, den du in der Fußzeile (Footer) verwenden kannst.
For each article, you will need to create a shorter title to use in the footer.
### Änderung angesagter Artikel im Lehrplan (Curriculum)
### Change Trending Articles in the Curriculum
Die angesagte Artikel in der Fußzeile des Lehrplans können durch Bearbeiten der Datei `client/i18n/locales/<language>/trending.json` geändert werden.
Diese Datei ist eine `*.json`-Datei, die die Form eines Objekts mit Eigenschaftsschlüsseln in der Form `article0title` und `article0link` hat.
Jede Zahl steht für einen der 30 Artikel in der Fußzeile. Achte darauf, dass der Titel und der Link richtig zugeordnet sind.
Each number represents one of the 30 articles in the footer. Achte darauf, dass der Titel und der Link richtig zugeordnet sind.
Dies ist ein Beispiel dafür, wie ein Teil der Datei `trending.json` aussehen muss.
@@ -77,11 +77,11 @@ Dies ist ein Beispiel dafür, wie ein Teil der Datei `trending.json` aussehen mu
Du solltest [den übersetzten Client lokal einrichten](how-to-enable-new-languages.md), um zu sehen, ob die Titel die richtige Länge haben. Jeder Titel muss in einer einzigen Zeile bleiben und darf nicht in eine neue Zeile übergehen.
### Wie man angesagte Artikel im cdn aktualisiert
### How to Update the Trending Articles in the CDN
Die Datei im cdn-Repository ist die Datei `universal/trending/<language>.yaml`.
The file in the CDN repository is the file `universal/trending/<language>.yaml`.
Diese Datei ist unterschiedlich aufgebaut, zum Beispiel hier der Inhalt der ersten 6 Artikel:
This file is shaped differently. For example, here is the file content for the first 6 articles:
```yaml
article0title: 'Unire CSV con Python'
@@ -102,9 +102,9 @@ Du kannst von einem Format in ein anderes konvertieren, indem du es vorsichtig m
> [!TIP] Es wird an einem neuen Arbeitsablauf gearbeitet, sodass es in Zukunft nur noch eine Stelle gibt, an der Änderungen vorgenommen werden müssen.
## How to translate articles in the footer links
## How to Translate Articles in the Footer Links
There are some links listed at the bottom of the footer (About, Alumni Network, Open Source etc.) and some of them can be translated into your language in the same way as other articles.
There are some links listed at the bottom of the footer (About, Alumni Network, Open Source, etc.) and some of them can be translated into your language in the same way as other articles.
Articles that can be translated:
@@ -126,7 +126,7 @@ The following links are pointing to external sites and cannot be translated:
- Alumni Network
- Open Source
### Change the footer links in the news
### Change the Footer Links in the News
Once you have translated and published the articles listed as "can be translated" above, you can update the links in the footer for `/news` by editing the file at `news/config/i18n/locales/<your language>/links.json` in the [freeCodeCamp/news](https://github.com/freeCodeCamp/news) repository.
@@ -146,7 +146,7 @@ Update the following part in the file:
}
```
### Change the footer links in the curriculum
### Change the Footer Links in the Curriculum
When you have translated and published the articles listed as "can be translated" above, as well as when the curriculum in your language is ready for launch, you can update the links in the footer for `/learn` by editing the file at `client/i18n/locales/<your language>/links.json` in the [freeCodeCamp/freeCodeCamp](https://github.com/freeCodeCamp/freeCodeCamp) repository.
@@ -172,7 +172,7 @@ Update the following part in the file:
}
```
## Wie man die Überschriften der Infoboxen in der Dokumentation übersetzt
## How to Translate the Info Boxes Headers in the Documentation
Du findest diese Boxen überall in der Dokumentation:
@@ -248,7 +248,7 @@ flexibleAlerts: {
}
```
## Wie man die motivierenden Zitate übersetzt
## How to Translate the Motivational Quotes
Die motivierenden Zitate befinden sich im [Curriculum-Repository](https://github.com/freeCodeCamp/freeCodeCamp/) in der Datei `/client/i18n/locales/<language>/motivation.json`.
@@ -265,7 +265,7 @@ Die Komplimente sind die kurzen Sätze, die am Ende einer Aufgabe erscheinen.
Du musst die Sätze nicht direkt aus dem Englischen übersetzen, sondern kannst eine Reihe von kurzen Sätzen schreiben, die sich eignen, um sie am Ende einer Aufgabe zu zeigen.
Das `compliments`-Array ist ein Array aus Strings, also würdest du zum Beispiel schreiben:
The `compliments` array is an array of strings. So, for example, you would write:
```json
{
@@ -296,9 +296,9 @@ Das `motivationalQuotes`-Array ist ein Array aus Objekten. Diese Objekte sollten
}
```
> [!TIP] Du solltest mit mindestens einem Dutzend Zitaten beginnen, um eine gewisse Vielfalt zu haben. Jedes Mal, wenn der Benutzer die Seite neu lädt, wird ein neues Zitat angezeigt.
> [!TIP] Du solltest mit mindestens einem Dutzend Zitaten beginnen, um eine gewisse Vielfalt zu haben. A new quote is shown every time the user reloads the page.
## Wie man allgemeine Links aktualisiert
## How to Update the Common Links
In der Datei `/client/i18n/locales/<language>/links.json` wird eine Datei mit allgemeinen Links geführt, die auf unserer [Lehrplan-Website](https://github.com/freecodecamp/freecodecamp) verwendet wird.
@@ -306,7 +306,7 @@ Einige dieser Links werden sich nicht ändern - aber du solltest die `/news`-Art
Du solltest auch die `help`-Kategorien aktualisieren, um auf das Unterforum deiner Sprache zu verweisen (normalerweise `language/category`, wie `Italiano/HTML-CSS`). Dies ermöglicht es freeCodeCamp-Benutzern, 'Hilfeanfragen' im richtigen Forum zu erstellen.
## So aktualisierst du die Metadaten der Website
## How to Update the Site Meta-Data
Die Metadaten der Website befinden sich in der Datei `/client/i18n/locales/<language>/meta-tags.json`. Diese Datei hat 5 Schlüssel:`title`, `description`, `social-description`, `keywords`, und `youre-unsubscribed`.
@@ -330,7 +330,7 @@ Du kannst "From Machine Translation" oder "From Translation Memory" wählen. Wä
Dann sind drei Schritte zu absolvieren:
1. Dateien. Wähle die zu übersetzenden Dateien aus. Du kannst das gesamte Projekt oder bestimmte Ordner oder Dateien übersetzen.
1. Dateien. Choose which files to translate, you can do all the projects, or specific folders or files.
2. Sprachen. Stelle hier deine Sprache ein.
3. Vorhandene Übersetzungen. Die beste Kombination ist hier "100% match" und "Apply to untranslated strings only". Genehmige nicht automatisch, denn es ist immer besser, ein menschliches Auge auf die Dinge zu werfen.
@@ -338,35 +338,35 @@ Dann sind drei Schritte zu absolvieren:
Wenn du diese Einstellung abgeschlossen hast, drücke den Button Pre-Translate und warte. Sobald der Vorgang abgeschlossen ist, wirst du benachrichtigt. Wie lange das dauert, hängt davon ab, wie viele unübersetzte Strings in den ausgewählten Dateien enthalten sind.
## Wie man das Crowdin Glossar aktualisiert
## How to Update Crowdin Glossary
> [!TIP] Ein aktualisiertes Glossar hilft, eine einheitliche Übersetzung von Fachbegriffen zu erhalten.
> [!TIP] An updated glossary helps in having a homogeneous translation of technical terms.
Das Crowdin-Glossar wird im [crowdin-glossaries](https://github.com/freeCodeCamp/crowdin-glossaries)-Repository aufbewahrt.
Im Ordner `glossaries` befinden sich verschiedene `*.csv`-Dateien (kommagetrennte Werte), eine für jedes Crowdin-Projekt, das ein Glossar hat, das über diesen Workflow aktualisiert werden kann.
In the `glossaries` folder, there are various `*.csv` (comma,separated values) files, one for each of the crowdin projects that have a glossary that can be updated from this workflow.
Die `client.csv`-Datei ist für das Projekt "Learn User Interface", die `curriculum.csv`-Datei ist für das Projekt "Coding Curriculum", die `docs.csv`-Datei ist für das Projekt "Contributing Documentation".
Um die Crowdin Glossare zu aktualisieren, musst du dieses Repo lokal klonen. Öffnen die `.csv`-Datei mit einem geeigneten Programm, zum Beispiel Microsoft Excel.
To update the Crowdin Glossaries, you need to clone this repo locally. Open the `.csv` file with an appropriate program, for example, Microsoft Excel.
In der `.csv`-Datei siehst du, dass die englische Sprache die ersten drei Spalten belegt, `Term:English` ist die Spalte für den englischen Begriff, `Description:English` ist die Spalte für die englische Beschreibung, und `Part:English` steht für die Wortart (z. B. Substantiv, Verb usw.) des Begriffs.
Dann hat jede Zielsprache zwei Spalten. Wenn du ins Dothrakische übersetzt, wirst du an den Spalten `Term:Dothraki` und `Description:Dothraki` interessiert sein. Die Spalte `Term:Dothraki` ist für die Übersetzung des Begriffs in Dothraki, und die Spalte `Description:Dothraki` ist für die Beschreibung des Begriffs in Dothraki.
> [!TIP] In Programmen wie Microsoft Excel kannst du die Spalten der anderen Sprachen ausblenden, um Bildschirmfläche freizugeben und die englischen Spalten und die Spalten der Zielsprache nebeneinander zu sehen.
> [!TIP] In programs like Microsoft Excel, you can hide the columns of the other languages to free up screen real-estate and see the English columns and the target language columns near each other.
Nachdem du die Änderungen vorgenommen und die Datei gespeichert hast, musst du einen PR mit den vorgeschlagenen Änderungen erstellen. Nachdem der PR angenommen wurde, musst du den GitHub Action-Workflow ausführen, um das Crowdin-Glossar zu aktualisieren. Deine Änderungen im Glossar werden sich nicht sofort auswirken, aber sie werden kommen.
## Wie man einen Mitwirkenden zum Korrekturleser (Proofreader) befördert
Wenn du der Meinung bist, dass ein Mitwirkender ein Crowdin-Korrekturleser werden könnte, kannst du ihm auf diese Weise die Rolle des Korrekturlesers übertragen:
If you consider that a contributor could become a Crowdin Proofreader, you can give the proofreader role to them this way:
In Crowdin wählst du `User management` im Menü auf der linken Seite aus.
In Crowdin, individuate the `User management` on the left-hand side menu.
Dadurch wird die Benutzerverwaltung geöffnet, in der du die Liste aller Benutzer sehen kannst.
Search for the user that will become proofreader. Verwende das Menü mit den drei Punkten in der Benutzerzeile, um ein Menü zu öffnen und wähle "Add to team". Die Korrekturleserteams haben den Standardnamen `Proof Readers(<Sprache>)`, du kannst das Team über den Namen der Sprache suchen. Wenn du das Team ausgewählt hast, benutze den Button "ADD" unten auf der Seite, um den Vorgang abzuschließen.
Search for the user that will become a proofreader. Verwende das Menü mit den drei Punkten in der Benutzerzeile, um ein Menü zu öffnen und wähle "Add to team". Die Korrekturleserteams haben den Standardnamen `Proof Readers(<Sprache>)`, du kannst das Team über den Namen der Sprache suchen. Wenn du das Team ausgewählt hast, benutze den Button "ADD" unten auf der Seite, um den Vorgang abzuschließen.
Der Benutzer ist jetzt ein Korrekturleser.

View File

@@ -18,7 +18,7 @@ Das freeCodeCamp ist eine inklusive Community, und das soll auch so bleiben.
We have a single [Code of Conduct](https://code-of-conduct.freecodecamp.org) that governs our entire community. Je weniger Regeln, desto einfacher ist es, sich sie zu merken. Du kannst die Regeln [hier](https://code-of-conduct.freecodecamp.org) lesen und sie dir einprägen.
> [!NOTE] As a moderator we would add you to one or more teams on GitHub, our community forums & chat servers. If you are missing access on a platform that you would like to moderate, please [reach out to a staff member](FAQ.md#additional-assistance).
> [!NOTE] As a moderator, we would add you to one or more teams on GitHub, our community forums & chat servers. If you are missing access on a platform that you would like to moderate, please [reach out to a staff member](FAQ.md#additional-assistance).
## GitHub moderieren
@@ -77,7 +77,7 @@ Pull Requests (PRs) sind die Art und Weise, wie Mitwirkende Änderungen an das f
Mit diesen [Antwortvorlagen](moderator-handbook.md#closing-invalid-pull-requests) kannst du ungültige Pull-Requests schließen und darauf antworten.
If the changes look good, please ensure to leave an approval with a "LGTM" comment. Sobald ein Pull-Request mindestens zwei Genehmigungen (einschließlich deiner) von den Moderatoren oder dem Entwicklungsteam erhält, kannst du ihn zusammenführen.
If the changes look good, please ensure to leave an approval with an "LGTM" comment. Sobald ein Pull-Request mindestens zwei Genehmigungen (einschließlich deiner) von den Moderatoren oder dem Entwicklungsteam erhält, kannst du ihn zusammenführen.
3. **Platform changes**
@@ -91,15 +91,15 @@ Pull Requests (PRs) sind die Art und Weise, wie Mitwirkende Änderungen an das f
Einige PRs sind automatische Aktualisierungen von Abhängigkeiten, die über eine Integration vorgenommen werden. Du solltest diese PRs nicht zusammenführen oder genehmigen. Ein Mitglied des Entwicklerteams kümmert sich um die Überprüfung und Zusammenführung solcher automatischen PRs.
#### Wie man Pull-Requests überprüft, zusammenführt oder schließt
#### How to Review, Merge, or Close Pull Requests
##### Weise dich einem Pull-Request zu:
##### Assign yourself to a Pull Request:
Wenn du einen Pull-Request zum Überprüfen auswählst, solltest du dich diesem zunächst selbst zuweisen. Du kannst dies tun, indem du in der rechten Spalte der GitHub-Benutzeroberfläche auf den Link "assign yourself" unter dem Bereich "assignees" klickst.
Je nachdem, um welche Art von Pull-Request es sich handelt, befolge die entsprechenden Regeln, die zuvor aufgelistet wurden.
##### Stelle sicher, dass die CI-Prüfungen bestanden werden:
##### Ensure the CI Checks are Passing:
Vergewissere dich vor dem Zusammenführen eines Pull Requests, dass GitHub alle Prüfungen für die Pull-Requests als bestanden meldet (grüne Häkchen). Wenn du feststellst, dass eine der Prüfungen fehlschlägt, untersuche bitte die Ursache und kläre sie. Führt die Änderung dazu, dass unsere Tests nicht mehr funktionieren? Wird die Seite korrekt aufgebaut, wenn der PR zusammengeführt wird? Diese Kontrollen sind entscheidend für die Stabilität der Plattform.
@@ -115,7 +115,7 @@ Die Änderungen des Pull-Requests stehen oben und die des main-Branch unten. Man
Wenn du dir unsicher bist, frag bitte einen der anderen Moderatoren oder das Entwicklerteam um Hilfe.
##### Zusammenführen eines gültigen Pull-Requests:
##### Merging a Valid Pull Request:
Wenn der Pull-Request so aussieht, dass er zusammengeführt werden kann (und keine weiteren Genehmigungen benötigt - denk daran, dass wir mindestens zwei benötigen), kannst du ihn zusammenführen. Achte darauf, dass du die Standardoption **"Squash and Merge"** verwendest. Dadurch werden alle Pull-Request-Commits zu einem einzigen Commit zusammengefasst, wodurch die Git-Historie viel einfacher zu lesen ist.
@@ -189,7 +189,7 @@ Again, if you have any problems or questions, make a post with your actions in t
If a user replies in a help thread for the freeCodeCamp curriculum with a solution, remove it and use the **Solution Instead of Help** canned reply (or a similar response in your own words).
If the OP (Original Poster) replies within a freeCodeCamp curriculum help thread with their final solution, blur it and use the **Blurred Spoiler Solution** canned reply.
If the OP (Original Poster) replies within a freeCodeCamp curriculum help thread with their final solution, blur it, and use the **Blurred Spoiler Solution** canned reply.
If a user creates a thread asking for feedback on a solution, move the thread to the feedback subforum and blur the solution, as necessary. If the user is only posting the solution to show it off, then unlist the thread and use the **Solutions Thread** canned reply.
@@ -207,9 +207,9 @@ Please rejoin once you have reached at least 13 years of age.
Thank you for understanding.
```
### Moderating Via Cell-phone
### Moderating Via Cell Phone
Moderating the forum is possible via a cell-phone but you may encounter some usage quirks. This is not an exhaustive list.
Moderating the forum is possible via a cell phone but you may encounter some usage quirks. This is not an exhaustive list.
- When trying to include a "Canned reply" in a response, if the menu doesn't open (after clicking on the gear), click on the text area first then try it again.
- The moderator's 'wrench' is at the bottom of the view-port but if you click it and cannot see the "Select Posts" button because it has scrolled out of view, you may need to try to scroll to it, though sometimes that doesn't work in which case moving to a desktop/laptop monitor may be needed.
@@ -231,7 +231,7 @@ Here's how moderators deal with violations of our [Code of Conduct](https://code
1. **Make sure the user intended to violate the [Code of Conduct](https://code-of-conduct.freecodecamp.org).**
Not all violations of the [Code of Conduct](https://code-of-conduct.freecodecamp.org) were intended as such. A new camper might post a large amount of code for help, unaware that this can be disruptive to conversation. In diesen Fällen kannst du sie einfach bitten, ihren Code mit Diensten wie CodePen oder Pastebin einzufügen.
Not all violations of the [Code of Conduct](https://code-of-conduct.freecodecamp.org) were intended as such. A new camper might post a large amount of code for help, unaware that this can be disruptive to the conversation. In diesen Fällen kannst du sie einfach bitten, ihren Code mit Diensten wie CodePen oder Pastebin einzufügen.
2. **If the camper clearly and intentionally violates the [Code of Conduct](https://code-of-conduct.freecodecamp.org), the moderator will proceed as follows:**
@@ -450,7 +450,7 @@ Dit is ook goeie praktyk op GitHub om 'n kort beskrywing van jou veranderinge te
```markdown
Hey @username
This PR seems to make similar changes as the existing PR <#number>. As such, we are going to close this as duplicate.
This PR seems to make similar changes as the existing PR <#number>. As such, we are going to close this as a duplicate.
If you feel you have additional changes to expand upon this PR, please feel free to push your commits and request this PR be reopened.
@@ -485,7 +485,7 @@ We are closing this pull request. Please suggest links and other details to add
If you think we're wrong in closing this issue, please request for it to be reopened and add further clarification. Thank you and happy coding.
```
### Adding comment about newbie mistakes
### Adding Comment About Newbie Mistakes
```markdown
As a new contributor, we encourage you to read our [contributing guidelines](https://contribute.freecodecamp.org).

View File

@@ -20,7 +20,7 @@ After confirming the above guidelines, please feel free to send an email to `pos
Once you report a vulnerability, we will look into it and ensure that it is not a false positive. If we need to clarify any details, we will get back to you. You can submit separate reports for each issue you find. Please note that we will not be able to respond to any issues that we think are outside the guidelines.
## Plattformen & Codebasen
## Platforms and Codebases
Here is a list of the platforms and codebases we are accepting reports for:

View File

@@ -1,6 +1,6 @@
If you are facing issue, there is a high chance that the resolution is in this documentation.
If you are facing an issue, there is a high chance that the resolution is in this documentation.
### Issues with installing the recommended prerequisites
## 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).
@@ -12,9 +12,9 @@ If you are on a different OS or are still facing issues, see [getting help](#get
>
> Please avoid creating GitHub issues for problems with the prerequisite technologies. They are out of the scope of this project.
### Issues missing the UI, Fonts, language strings, or build errors.
## Issues with Missing UI, Fonts, Language Strings, or Build Errors
When you build the client, Gatsby will cache the Fonts, language strings and UI. If one of them isn't cached, run the following:
When you build the client, Gatsby will cache the Fonts, language strings, and UI. If one of them isn't cached, run the following:
```console
pnpm run clean
@@ -48,7 +48,7 @@ git clean -ifdX
<img src="https://user-images.githubusercontent.com/1884376/94270515-ca579400-ff5d-11ea-8ff1-152cade31654.gif" alt="How to clean git untracked files" />
</details>
### Issues with API, login, Challenge Submissions, etc.
## 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.
@@ -74,19 +74,19 @@ TCP 0.0.0.0:3000 DESKTOP LISTENING
---
### Issues signing out while navigating
## Issues Signing Out while Navigating
While in development, your session is stored as cookies. Clearing them will sign you out of your development account.
Running `pnpm run seed:certified-user` will log you out, too. It will overwrite the development user in your local database.
### Issue getting 404 when navigating profile page
## Issue Getting 404 when Navigating Profile Page
When you try to navigate to http://localhost:8000/developmentuser to view the profile page, Gatsby takes over serving the client-side pages and hence you will get a 404 page for the user profile when working.
There is a "Preview Custom 404 Page" button, click it to see the profile.
### Issues installing dependencies
## Issues Installing DDependencies
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.

View File

@@ -2,14 +2,14 @@
Benutzer-Tokens werden verwendet, um die Benutzer/innen gegenüber Dritten zu identifizieren, damit Aufgaben, die bei diesen Diensten erledigt werden, im Konto der Benutzer/innen gespeichert werden können.
## So werden sie erstellt
## How they are Created
Im Moment werden die Token nur für die Einreichung der Aufgaben für relationale Datenbanken verwendet. A token gets created when a signed-in user clicks the "Click here to start the course" or "Click here to start the project" buttons to start one of the Relational Database courses or projects.
## Wann sie gelöscht werden
## When they Get Deleted
Ein Benutzer-Token wird gelöscht, wenn sich ein Benutzer aus dem freeCodeCamp abmeldet, seinen Fortschritt zurücksetzt, sein Konto löscht oder den Token manuell über das Widget auf der Einstellungsseite löscht.
## Wie sie funktionieren
## How they Work
Token werden in einer `UserToken`-Sammlung in der Datenbank gespeichert. Jeder Datensatz hat eine eindeutige `_id`, die der Token ist, und eine `user_id`, die auf das Konto des Benutzers aus der `user`-Sammlung verweist. Das Token wird mit JWT kodiert und an den Client gesendet, wenn es erstellt wird. That encoded token is then given to third-party services that need it and sent to our API by them when a challenge is completed. Wenn unsere API sie erhält, wird sie dekodiert, damit wir den Benutzer, der eine Aufgabe einreicht, identifizieren und die abgeschlossene Aufgabe in seinem `completedChallenges` speichern können.

View File

@@ -1,6 +1,6 @@
### Sono nuovo in GitHub e nel mondo Open Source. Da dove dovrei iniziare?
Leggi la nostra guida ["Come contribuire all'Open Source"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). È un compendio completo per progetti adatti ai neofiti. E include un sacco di consigli per contribuire all'open source.
Leggi la nostra guida ["Come contribuire all'Open Source"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). È un compendio completo per progetti adatti ai neofiti. And it includes a lot of open-source contribution tips.
### Cosa devo sapere per contribuire al codebase?

View File

@@ -2,11 +2,11 @@
Questa guida ti aiuterà a capire lo stack della nostra infrastruttura e come gestiamo le nostre piattaforme. Anche se questa guida non ha dettagli esaustivi per tutte le operazioni, può essere utilizzata come riferimento per la comprensione dei sistemi.
Facci sapere se hai commenti o domande, e saremo felici di darti ulteriori chiarimenti.
Let us know if you have feedback or queries and we will be happy to clarify.
# Manuale di volo - Deployment del codice
## Flight Manual - Code Deployments
Questo repository è continuamente sottoposto a build, test e deployment su **set separati di infrastrutture (Servers, Databases, CDN, ecc.)**.
This repository is continuously built, tested, and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**.
Questo prevede tre fasi da seguire in sequenza:
@@ -14,7 +14,7 @@ Questo prevede tre fasi da seguire in sequenza:
2. Queste modifiche sono testate da una serie di test automatizzati.
3. Una volta che i test sono superati, rilasciamo le modifiche (o aggiornamenti se necessario) alle distribuzioni sulla nostra infrastruttura.
#### Costruire il codebase - Mappare i branch di Git alle distribuzioni.
### Building the codebase - Mapping Git Branches to Deployments
In genere, si fa un merge di [`main`](https://github.com/freeCodeCamp/freeCodeCamp/tree/main) (il ramo di sviluppo di default) nel branch [`prod-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/prod-staging) una volta al giorno, e questo è rilasciato in una infrastruttura isolata.
@@ -26,33 +26,33 @@ Una volta che il team di sviluppo [`@freeCodeCamp/dev-team`](https://github.com/
Questa è la versione finale che sposta le modifiche alle nostre piattaforme di produzione su freeCodeCamp.org.
#### Testare le modifiche - Integrazione e Test di accettazione dell'utente.
### Testing changes - Integration and User Acceptance Testing
Adottiamo vari livelli di integrazione e test di accettazione per verificare la qualità del codice. Tutti i nostri test sono fatti con software come [GitHub Actions CI](https://github.com/freeCodeCamp/freeCodeCamp/actions) e [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp).
Abbiamo test unitari per testare le nostre soluzioni delle sfide, API dei server e interfacce utente del client. Questi ci aiutano a testare l'integrazione tra i diversi componenti.
We have unit tests for testing our challenge solutions, Server APIs, and Client User interfaces. Questi ci aiutano a testare l'integrazione tra i diversi componenti.
> [!NOTE] Siamo anche in fase di scrittura di test utente finale che ci aiuteranno a replicare scenari del mondo reale come l'aggiornamento di una e-mail o una chiamata all'API o a servizi di terze parti.
> [!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.
Tutti questi test aiutano a evitare che i problemi si ripetano e assicurano di non introdurre dei bug mentre si lavora su un altro bug o una nuova funzionalità.
#### Deploy delle modifiche - Push delle modifiche ai server.
### Deploying Changes - Pushing changes to servers
Abbiamo configurato un software di consegna continua per inviare modifiche ai nostri server di sviluppo e produzione.
Una volta che le modifiche sono inviate ai branch di rilascio protetti, una pipeline di build viene attivata automaticamente per il branch. Le pipeline di build sono responsabili della compilazione degli artefatti e di conservarli in un deposito di stoccaggio per un uso successivo.
La pipeline di build continua ad attivare una corrispondente pipeline di rilascio se completa un'esecuzione riuscita. Le pipeline di rilascio sono responsabili della raccolta degli artefatti di build, e di spostarli sui server di produzione.
La pipeline di build continua ad attivare una corrispondente pipeline di rilascio se completa un'esecuzione riuscita. The release pipelines are responsible for collecting the build artifacts, moving them to the servers, and going live.
Lo stato delle build e delle release è [disponibile qui](#stato-di-build-test-e-distribuzione).
The statuses of builds and releases are [available here](#build-test-and-deployment-status).
## Avviare un build, test e deploy
## Trigger a Build, Test, and Deploy
Attualmente, solo i membri del team di sviluppo possono fare il push sui branch di produzione. Le modifiche ai branch `production-*` possono avvenire solo tramite il merge fast-forward all'[`upstream`](https://github.com/freeCodeCamp/freeCodeCamp).
Currently, only members of the developer team can push to the production branches. Le modifiche ai branch `production-*` possono avvenire solo tramite il merge fast-forward all'[`upstream`](https://github.com/freeCodeCamp/freeCodeCamp).
> [!NOTE] Nei prossimi giorni miglioreremmo questo flusso in modo che avvenga tramite pull-requests, per una migliore gestione degli accessi e della trasparenza.
> [!NOTE] In the upcoming days, we would improve this flow to be done via pull requests, for better access management and transparency.
### Invio delle modifiche alle applicazioni in staging.
### Pushing changes to Staging Applications
1. Configura correttamente i tuoi remotes.
@@ -102,15 +102,15 @@ Attualmente, solo i membri del team di sviluppo possono fare il push sui branch
git push upstream
```
> [!NOTE] Non sarai in grado di forzare il push e se hai riscritto la cronologia in ogni caso questi comandi restituiranno degli errori.
> [!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.
>
> Se lo fanno, potresti aver fatto qualcosa in modo errato e dovresti solo ricominciare da capo.
Gli step precedenti attiveranno automaticamente l'esecuzione della pipeline di build per il ramo `prod-staging`. Una volta completata la build, gli artefatti vengono salvati come file `.zip` in un archivio per essere recuperati e utilizzati in seguito.
La pipeline di rilascio viene attivata automaticamente quando un nuovo artefatto è disponibile dalla pipeline di build connessa. Per le piattaforme di staging questo processo non comporta l'approvazione manuale e gli artefatti vengono inviati alla CDN client e ai server API.
La pipeline di rilascio viene attivata automaticamente quando un nuovo artefatto è disponibile dalla pipeline di build connessa. For staging platforms, this process does not involve manual approval, and the artifacts are pushed to the Client CDN and API servers.
### Inviare le modifiche alle applicazioni in produzione.
### Pushing changes to Production Applications
Il processo è per lo più lo stesso delle piattaforme di staging, con la messa in atto di alcuni controlli aggiuntivi. Questo è solo per essere sicuri: non possiamo permetterci di rompere nulla su freeCodeCamp.org dato che può vedere centinaia di utenti che lo utilizzano in qualsiasi momento.
@@ -134,7 +134,7 @@ Il processo è per lo più lo stesso delle piattaforme di staging, con la messa
git push upstream
```
> [!NOTE] Non sarai in grado di forzare il push e se hai riscritto la cronologia in ogni caso questi comandi restituiranno degli errori.
> [!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.
>
> Se lo fanno, potresti aver fatto qualcosa in modo errato e dovresti solo ricominciare da capo.
@@ -142,7 +142,7 @@ Gli step precedenti attiveranno automaticamente l'esecuzione della pipeline di b
**Misure supplementari per le azioni dello Staff**
Una volta che viene avviato un processo di rilascio, i membri del team dello staff di sviluppo riceveranno un'e-mail automatizzata di intervento manuale. Possono _approvare_ o _rifiutare_ l'esecuzione del rilascio.
Once a release run is triggered, members of the developer staff team will receive an automated manual intervention email. Possono _approvare_ o _rifiutare_ l'esecuzione del rilascio.
Se le modifiche funzionano bene e sono state testate sulla piattaforma di staging, allora possono essere approvate. Lapprovazione deve essere rilasciata entro 4 ore dallattivazione del rilascio prima di essere respinta automaticamente. Un membro dello staff può riattivare il rilascio manualmente per gli avvi rifiutati, o attendere il prossimo ciclo di rilascio.
@@ -154,7 +154,7 @@ Per uso dello staff:
Una volta che uno dei membri dello staff approva una release, la pipeline porterà i cambiamenti live ai CDN di produzione e ai server API di freecodecamp.org.
## Stato di build, test e distribuzione
## Build, Test and Deployment Status
Ecco lo stato attuale di test, build e deployment del codebase.
@@ -165,17 +165,17 @@ Ecco lo stato attuale di test, build e deployment del 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 Tests](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` (sperimentale, futuro) | - | - | - |
## Early access e beta test
## Early Access and Beta Testing
Ti diamo il benvenuto al test di queste versioni in modalità **"public beta testing"** e all'accesso anticipato alle funzionalità imminenti delle piattaforme. A volte queste funzionalità/modifiche sono indicate come **next, beta, staging,** ecc. in modo intercambiabile.
I tuoi contributi tramite feedback e segnalazioni di problemi ci aiuteranno a rendere le piattaforme di produzione su `freeCodeCamp.org` più **robuste**, **consistenti** e **stabili** per tutti.
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.
Ti ringraziamo se vorrai segnalare i bug che incontrerai aiutandoci a migliorare freeCodeCamp.org. Sei un grande!
### Identificare la prossima versione delle piattaforme
### Identifying the Upcoming Version of the Platforms
Attualmente una versione beta test pubblica è disponibile al seguente indirizzo:
Currently, a public beta testing version is available at:
| Applicazione | Lingua | URL |
|:------------ |:-------- |:---------------------------------------- |
@@ -189,27 +189,27 @@ Attualmente una versione beta test pubblica è disponibile al seguente indirizzo
> [!NOTE] Il nome del dominio è diverso da **`freeCodeCamp.org`**. Questo è intenzionale per prevenire l'indicizzazione dai motori di ricerca e creare confusione per i normali utenti della piattaforma.
>
> La lista precedende non è esaustiva di tutte le applicazioni che offriamo. E non tutte le varie lingue sono rilasciate in staging per risparmiare risorse.
> 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.
### Identificare la versione attuale delle piattaforme
### Identifying the Current Version of the Platforms
**La versione attuale della piattaforma è sempre disponibile su [`freeCodeCamp.org`](https://www.freecodecamp.org).**
Il team di sviluppo fa un merge dei cambiamenti dal ramo `prod-staging` a `prod-current` quando rilascia dei cambiamenti. Il commit superiore dovrebbe essere quello che si vede live sul sito.
È possibile identificare la versione esatta distribuita visitando i registri di compilazione e distribuzione disponibili nella sezione stato. In alternativa puoi scriverci nella [chat room dei contributori](https://discord.gg/PRyKn3Vbay) per una conferma.
È possibile identificare la versione esatta distribuita visitando i registri di compilazione e distribuzione disponibili nella sezione stato. Alternatively, you can also ping us in the [contributors chat room](https://discord.gg/PRyKn3Vbay) for a confirmation.
### Limitazioni note
### Known Limitations
Ci sono alcune limitazioni e compromessi noti quando si utilizza la versione beta della piattaforma.
- #### Tutti i dati / progressi personali su queste piattaforme beta NON saranno salvati o importati in produzione.
- #### All data / personal progress on these beta platforms will NOT be saved or carried over to production
**Gli utenti nella versione beta avranno un account separato dalla produzione.** La versione beta utilizza un database fisicamente separato dalla produzione. Questo ci dà la possibilità di prevenire qualsiasi perdita accidentale di dati o modifiche. Il team di sviluppo può eliminare il database su questa versione beta se necessario.
**Gli utenti nella versione beta avranno un account separato dalla produzione.** La versione beta utilizza un database fisicamente separato dalla produzione. Questo ci dà la possibilità di prevenire qualsiasi perdita accidentale di dati o modifiche. The dev-team may purge the database on this beta version as needed.
- #### Non ci sono garanzie sull'uptime e l'affidabilità delle piattaforme beta.
- #### There are no guarantees on the uptime and reliability of the beta platforms
Il deploy dovrebbe essere frequente e in iterazioni rapide, talvolta più volte al giorno. Di conseguenza a volte ci saranno tempi di inattività inattesi o funzionalità guaste sulla versione beta.
Il deploy dovrebbe essere frequente e in iterazioni rapide, talvolta più volte al giorno. As a result, there will be unexpected downtime at times or broken functionality on the beta version.
- #### Non inviare utenti regolari a questo sito come misura per confermare una correzione
@@ -219,13 +219,13 @@ Ci sono alcune limitazioni e compromessi noti quando si utilizza la versione bet
Usiamo un test tenant per freeCodeCamp.dev su Auth0, e quindi non abbiamo l'abilità di impostare un dominio personalizzato. Questo fa sì che tutte le callback di reindirizzamento e la pagina di login appaiano su un dominio predefinito come: `https://freecodecamp-dev.auth0.com/`. Questo non ha effetto sulle funzionalità ed è quanto più vicino possiamo arrivare alla produzione.
## Segnalazione di problemi e invio di feedback
## Reporting issues and leaving feedback
Per favore apri nuove issue per discutere e segnalare bug.
Puoi inviare un'email a `dev[at]freecodecamp.org` se hai domande. Come sempre tutte le vulnerabilità di sicurezza dovrebbero essere segnalate a `security[at]freecodecamp.org` invece che al tracker pubblico o nel forum.
# Manuale di volo - Manutenzione del sever
## Flight Manual - Server Maintenance
> [!WARNING]
>
@@ -236,9 +236,9 @@ Come membro dello staff, potrebbe esserti stato dato accesso ai nostri fornitori
Ecco alcuni utili comandi che puoi usare per lavorare sulle Virtual Machine (VM), per fare manutenzione o faccende generali.
## Ottieni una lista delle VM
## Get a list of the VMs
> [!NOTE] Anche se puoi già avere avere accesso SSH alle VM, questo da solo non ti permetterà di avere l'elenco delle VM a meno che non ti sia stato concesso l'accesso ai portali cloud.
> [!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"
```
## Creare nuove risorse
## Spin New Resources
Stiamo lavorando per creare il nostro setup IaC, e mentre stiamo lavorando su quello puoi usare il portale di Azure o il CLI di Azure per creare nuove macchine virtuali e altre risorse.
> [!TIP] Non importa cosa usi per creare nuove risorse, abbiamo alcuni [utili file di configurazione cloud-init](https://github.com/freeCodeCamp/infra/tree/main/cloud-init) per aiutarti a fare provisioning di base, come installare docker o aggiungere le chiavi SSH, ecc.
## Mantieni le VM aggiornate
## Keep VMs Updated
Dovresti tenere aggiornate le VM eseguendo update e upgrade. Questo assicurerà che la macchina virtuale sia patchata con le ultime correzioni di sicurezza.
Dovresti tenere aggiornate le VM eseguendo update e upgrade. This will ensure that the virtual machine is patched with the latest security fixes.
> [!WARNING] Prima di eseguire questi comandi:
>
> - Assicurati che il provisioning della VM sia stato completato e che non ci siano step post-install in esecuzione.
> - Make sure that the VM has been provisioned completely and that there are no post-install steps running.
> - Se stai aggiornando pacchetti su una VM che sta già servendo una applicazione, assicurati che l'app sia stata fermata e salvata. L'aggiornamento dei pacchetti causerà picchi di utilizzo di banda, memoria e/o CPU portando a malfunzionamenti di applicazioni in esecuzione.
Aggiorna informazioni sul pacchetto
@@ -319,7 +319,7 @@ Pulisci i pacchetti inutilizzati
sudo apt autoremove -y
```
## Lavora sui server Web (Proxy)
## Work on Web Servers (Proxy)
Stiamo eseguendo istanze di carico bilanciate (Azure Load Balancer) per i nostri server web. Questi server eseguono NGINX che inverte il proxy di tutto il traffico a freeCodeCamp.org da varie applicazioni in esecuzione sulle proprie infrastrutture.
@@ -370,7 +370,7 @@ Provisioning delle VM con il codice
Aggiungi/aggiorna gli indirizzi IP di sorgente/origine dell'applicazione.
3. Fai il setup di network e firewall.
3. Set up networking and firewalls.
Configura i firewall di Azure e `ufw` come necessario per indirizzi di origine d'ingresso.
@@ -378,7 +378,7 @@ Provisioning delle VM con il codice
Configura e aggiungi regole al load balancer se necessario. Potresti anche aver bisogno di aggiungere le VM al pool del load balancer del backend.
### Aggiornamento Istanze (Manutenzione)
### Log e monitoraggio
1. Controlla lo stato dei servizi NGINX usando i comandi seguenti:
@@ -415,7 +415,7 @@ nginx -t
nginx -s reload
```
## Lavora sulle istanze API
## Work on API Instances
1. Installa strumenti di generazione per i binari di node (`node-gyp`) ecc.
@@ -435,7 +435,7 @@ Fare il provisioning delle VM con il codice
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
@@ -470,7 +470,7 @@ pnpm prebuild && pnpm build:curriculum && pnpm build:server
pnpm start:server
```
### Log e monitoraggio
### Aggiornamento Istanze (Manutenzione)
```console
pnpm pm2 logs
@@ -482,11 +482,11 @@ pnpm pm2 monit
### Aggiornamento Istanze (Manutenzione)
Ogni tanto devono essere fatti dei deployment dei cambiamenti al codice alle istanze delle API. Può essere un update continuo o un update manuale. Il secondo è essenziane quando si cambiando dipendenze o si aggiungono variabili d'ambiente.
Ogni tanto devono essere fatti dei deployment dei cambiamenti al codice alle istanze delle API. Può essere un update continuo o un update manuale. The latter is essential when changing dependencies or adding environment variables.
> [!ATTENTION] Le pipeline automatizzate al momento non gestiscono l'aggiornamento delle dipendenze. Dobbiamo fare un aggiornamento manuale prima dell'avvio di qualsiasi pipeline di deployment.
#### 1. Aggiornamenti manuali - Usati per aggiornare dipendenze, variabili env.
#### 1. Manual Updates - Used for updating dependencies, env variables.
1. Stop all instances
@@ -512,13 +512,13 @@ pnpm prebuild && pnpm build:curriculum && pnpm build:server
pnpm start:server && pnpm pm2 logs
```
#### 2. Aggiornamenti continui - usati per cambiamenti logici al codice.
#### 2. Rolling updates - Used for logical changes to code.
```console
pnpm reload:server && pnpm pm2 logs
```
> [!NOTE] Gli update continui a codice e logica sono gestiti dalle pipeline. Non dovresti aver bisogno di eseguire questi comandi. Sono qui per documentazione.
> [!NOTE] We are handling rolling updates to code and logic via pipelines. Non dovresti aver bisogno di eseguire questi comandi. Sono qui per documentazione.
#### 3. Updating Node
@@ -530,7 +530,7 @@ pnpm reload:server && pnpm pm2 logs
pnpm pm2 update
```
## Lavora sulle istanze del client
## Work on Client Instances
1. Install build tools for node binaries (`node-gyp`) etc.
@@ -538,7 +538,7 @@ pnpm pm2 update
sudo apt install build-essential
```
### Prima Installazione
### Prima installazione
Fare provisioning delle VM con il codice
@@ -576,7 +576,7 @@ Fare provisioning delle VM con il codice
> pm2 start ./client-start-secondary.sh --name client-secondary
> ```
### Aggiornamento Istanze (Manutenzione)
### Logging e monitoraggio
```console
pm2 logs
@@ -586,13 +586,13 @@ pm2 logs
pm2 monit
```
### Aggiornamento Istanze (Manutenzione)
### Aggiornamento istanze (Manutenzione)
Ogni tanto devono essere fatti dei deployment dei cambiamenti al codice alle istanze delle API. Può essere un update continuo o un update manuale. Il secondo è essenziane quando si cambiando dipendenze o si aggiungono variabili ambientali.
> [!ATTENTION] Le pipeline automatizzate al momento non gestiscono l'aggiornamento delle dipendenze. Dobbiamo fare un aggiornamento manuale prima di ogni esecuzione della pipeline di deployment.
#### 1. Manual Updates - Used for updating dependencies, env variables.
#### 1. Aggiornamenti manuali - Usati per aggiornare dipendenze, variabili env.
1. Stop all instances
@@ -608,7 +608,7 @@ Ogni tanto devono essere fatti dei deployment dei cambiamenti al codice alle ist
pm2 start all --update-env && pm2 logs
```
#### 2. Rolling updates - Used for logical changes to code.
#### 2. Aggiornamenti continui - usati per cambiamenti logici al codice.
```console
pm2 reload all --update-env && pm2 logs
@@ -616,13 +616,13 @@ pm2 reload all --update-env && pm2 logs
> [!NOTE] Gli update continui a codice e logica sono gestiti dalle pipeline. Non dovresti aver bisogno di eseguire questi comandi. Sono qui per documentazione.
## Lavorare sui server di chat
## Work on Chat Servers
I nostri chat server sono disponibili con una configuratione HA [raccomandata nella documentazione di Rocket.Chat](https://docs.rocket.chat/installation/docker-containers/high-availability-install). Il file `docker-compose` per questo è [disponibile qui](https://github.com/freeCodeCamp/chat-config).
Avviamo istanze ridondanti di NGINX che sono loro stesse con bilanciamento di carico (Azure Load Balancer) sul cluster di Rocket.Chat. I file di configurazione NGINX sono [disponibili qui](https://github.com/freeCodeCamp/chat-nginx-config).
### Prima installazione
### First Install
Fare provisioning delle VM con il codice
@@ -669,7 +669,7 @@ Fare provisioning delle VM con il codice
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.
@@ -695,7 +695,7 @@ Fare provisioning delle VM con il codice
docker-compose up -d
```
### Logging e monitoraggio
### Logging and Monitoring
1. Check status for NGINX service using the below command:
@@ -709,7 +709,7 @@ Fare provisioning delle VM con il codice
docker ps
```
### Aggiornamento istanze (Manutenzione)
### Updating Instances (Maintenance)
**Cluster NGINX:**
@@ -790,9 +790,9 @@ Le modifiche di configurazione alle nostre istanze NGINX sono mantenute su GitHu
Select yes (y) to remove everything that is not in use. This will remove all stopped containers, all networks and volumes not used by at least one container, and all dangling images and build caches.
## Lavorare sugli strumenti dei contributori
## Work on Contributor Tools
### Distribuire gli update
### Deploy Updates
Fai ssh nella VM (hosted su Digital Ocean).
@@ -804,7 +804,7 @@ pnpm run build
pm2 restart contribute-app
```
## Aggiornare la versione di Node.js sulle VM
## Updating Node.js Versions on VMs
Visualizza le versioni installate di node & npm
@@ -828,7 +828,7 @@ Verifica i pacchetti installati
npm ls -g --depth=0
```
Dai l'alias di `default` alla versione corrente LTS di Node.js (bloccata all'ultima versione maggiore)
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 <version>
```
> [!ATTENTION] Per applicazioni client, lo script della shell non può essere fatto risorgere tra versioni di Node.js con `pm2 resurrect`. Fai il deploy dei processi da zero. Questo dovrebbe migliorare quando useremo un setup basato su docker.
> [!ATTENTION] Per applicazioni client, lo script della shell non può essere fatto risorgere tra versioni di Node.js con `pm2 resurrect`. Fai il deploy dei processi da zero. This should become nicer when we move to a docker-based setup.
>
> Se stai usando PM2 per processi dovresti anche richiamare le applicazione e salvare la lista di processo per un recupero automatico al riavvio.
@@ -874,19 +874,19 @@ pm2 save
pm2 logs
```
## Installare e aggiornare Azure Pipeline Agent
## Installing and Updating Azure Pipeline Agents
Vedi: https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-linux?view=azure-devops e segui le istruzioni per arrestare, rimuovere e reinstallare gli agenti. Approssimativamente puoi seguire gli step elencati qui.
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. Approssimativamente puoi seguire gli step elencati qui.
Avrai bisogno di un PAT, che puoi ottenere da: https://dev.azure.com/freeCodeCamp-org/_usersSettings/tokens
### Installare agenti su target di deployment
### Installing Agents on Deployment targets
Vai su [Azure Devops](https://dev.azure.com/freeCodeCamp-org) e registra l'agente dall'inizio nei requisiti [deployment groups](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_machinegroup).
> [!NOTE] Dovresti eseguire gli script nella home directory, e assicurati che nessun'altra directory `azagent` esista.
### Aggiornare gli agent
### Updating Agents
Attualmente aggiornare gli agent richiede che siano rimossi e riconfigurati. Questo è richiesto perché possano ottenere valori `PATH` e altre variabili d'ambiente di sistema. Dobbiame farlo per aggiornare Node.js sulle VM target di deployment.
@@ -924,7 +924,7 @@ Attualmente aggiornare gli agent richiede che siano rimossi e riconfigurati. Que
Una volta completati gli step precedenti potrai ripetere gli stesi passi per installare l'agente.
# Manuale di volo - Email Blast
## Flight Manual - Email Blast
Usiamo uno [strumento CLI](https://github.com/freecodecamp/sendgrid-email-blast) per inviare la nostra newsletter settimanale. Per avviare e iniziare il processo:
@@ -955,9 +955,9 @@ Usiamo uno [strumento CLI](https://github.com/freecodecamp/sendgrid-email-blast)
7. When the email blast is complete, verify that no emails have failed before destroying the droplets.
# Manuale di Volo - Aggiunta di istanze della pubblicazione per nuove lingue
## Flight Manual - Adding news instances for new languages
### Modifiche al tema
### Theme Changes
Utilizziamo un [tema](https://github.com/freeCodeCamp/news-theme) personalizzato per la nostra pubblicazione. L'aggiunta delle seguenti modifiche al tema consente l'aggiunta di nuove lingue.
@@ -968,6 +968,6 @@ Utilizziamo un [tema](https://github.com/freeCodeCamp/news-theme) personalizzato
5. In [`partials/i18n.hbs`](https://github.com/freeCodeCamp/news-theme/blob/main/partials/i18n.hbs), add scripts for the newly created config files.
6. Add the related language `day.js` script from [cdnjs](https://cdnjs.com/libraries/dayjs/1.10.4) to the [freeCodeCamp CDN](https://github.com/freeCodeCamp/cdn/tree/main/build/news-assets/dayjs/1.10.4/locale)
### Modifiche alla dashboard di Ghost
### Ghost Dashboard Changes
Cambia gli asset della pubblicazione andando alla dashboard di ghost > settings > general e caricando l'[icona](https://github.com/freeCodeCamp/design-style-guide/blob/master/assets/fcc-puck-500-favicon.png), il [logo](https://github.com/freeCodeCamp/design-style-guide/blob/master/downloads/fcc_primary_large.png), e la [copertina](https://github.com/freeCodeCamp/design-style-guide/blob/master/assets/fcc_ghost_publication_cover.png) della pubblicazione.

View File

@@ -4,23 +4,23 @@ Quando si fanno cambiamenti a JavaScript, CSS o HTML che possono cambiare le fu
Per imparare come scrivere test Cypress, o specs, per favore vedi la [dcoumentazione](https://docs.cypress.io/guides/getting-started/writing-your-first-test.html) ufficiale di Cypress.
## Dove aggiungere un test
## Where to Add a Test
- I test Cypress sono nella directory `./cypress`.
- I test Cypress per un modulo del curriculum sono nella corrispondente cartella del curriculum, per esempio `cypress/integration/learn/responsive-web-design/basic-css/index.js`.
## Come eseguire i test
## How to Run Tests
> [!NOTE] Se stai usando GitPod, per favore vedi [Setup di Cypress su GitPod](how-to-add-cypress-tests.md#setup-di-cypress-su-gitpod)
### 1. Assicurati che MongoDB e l'applicazione del client siano in esecuzione
### 1. Ensure that MongoDB and Client Applications are Running
- [Fai partire MongoDB e fai il seed del database](how-to-setup-freecodecamp-locally.md#step-3-start-mongodb-and-seed-the-database)
- [Avvia l'applicazione del client di freeCodeCamp e il server API](how-to-setup-freecodecamp-locally.md#step-4-start-the-freecodecamp-client-application-and-api-server)
### 2. Esegui i test cypress
### 2. Run the Cypress Tests
Per eseguire i test su build di produzione, sostituisci `dev` con `prd` nella parte seguente.
@@ -39,7 +39,7 @@ Per eseguire i test su build di produzione, sostituisci `dev` con `prd` nella pa
Ad esempio:
```console
pnpm run cypress -- run --spec=cypress/e2e/default/landing.js
pnpm run cypress -- run --spec=cypress/e2e/default/landing.ts
```
- Per creare una build di sviluppo, avvia il server di sviluppo e esegui tutti i test cypress end-to-end esistenti:

View File

@@ -7,11 +7,11 @@
## Introduzione
Alcuni flussi di lavoro di posta elettronica, come l'aggiornamento dell'email di un utente, richiedono l'api-server di back-end per inviare email in uscita. MailHog è una alternativa ad usare un provider di un servizio email per mandare messagi email. È uno strumento per lo sviluppo per testare le email che catturerà i messaggi email mandati dalla tua istanza di freeCodeCamp.
Some email workflows, like updating a user's email, require the back-end api-server to send outgoing emails. MailHog è una alternativa ad usare un provider di un servizio email per mandare messagi email. È uno strumento per lo sviluppo per testare le email che catturerà i messaggi email mandati dalla tua istanza di freeCodeCamp.
## Installare MailHog
MailHog può essere installato su macOS, Windows e Linux o usato con Docker
MailHog can be installed on macOS, Windows, and Linux or used via Docker
<details><summary>Installare MailHog con Docker</summary>

View File

@@ -177,7 +177,7 @@ L'ordine dei superblocchi in questo oggetto rispecchia il modo in cui appaiono s
L'array `CurriculumMaps.Landing` dovrebbe contenere esattamente un superblocco per tutte le nostre certificazioni attuali e l'oggetto `CurriculumMaps.Learn` dovrebbe avere tutti i superblocchi esistenti al suo interno. I superblocchi tradotti vanno in `TranslationStates.Audited` e i superblocchi non tradotti vanno in `TranslationStates.NotAudited`. Ognuno di questi due oggetti ha i quattro stati diversi in cui può essere un superblocco.
- `SuperBlockStates.Current`: Significa che il superblocco è attuale, `(New) Responsive Web Design` ad esempio.
- `SuperBlockStates.New`: Compare solo quando `SHOW_NEW_CURRICULUM` è impostato su `true` nel file `.env`. È per la visualizzazione di nuovi superblocchi su uno specifico build. Per esempio, quando abbiamo rilasciato il nuovo RWD, lo abbiamo mostrato solo in inglese per iniziare.
- `SuperBlockStates.New`: Compare solo quando `SHOW_NEW_CURRICULUM` è impostato su `true` nel file `.env`. È per la visualizzazione di nuovi superblocchi su uno specifico build. For example, when we released the new RWD, we only showed it on English to start.
- `SuperBlockStates.Upcoming`: Compare solo quando `SHOW_UPCOMING_CHANGES` è impostato su `true` nel file `.env`. È per mostrare i superblocchi localmente mentre sono in sviluppo. Oppure, se hai solo bisogno di nascondere un superblocco dalla mappa per qualche altra ragione.
- `SuperBlockStates.Legacy`: Un superblocco viene spostato qui quando una versione più recente di quel superblocco è stata completamente tradotta e sostituita.
@@ -218,7 +218,7 @@ const algoliaIndices = {
## Attivare video localizzati
Per le sfide video, devi cambiare alcune cose. Come prima cosa aggiungi la nuova lingua alla query per GraphQL nel file `client/src/templates/Challenges/video/Show.tsx`. Per esempio, in questo modo aggiungeresti Dothraki alla query:
Per le sfide video, devi cambiare alcune cose. First, add the new locale to the GraphQL query in the `client/src/templates/Challenges/video/Show.tsx` file. Per esempio, in questo modo aggiungeresti Dothraki alla query:
```tsx
query VideoChallenge($slug: String!) {
@@ -256,7 +256,7 @@ export interface VideoLocaleIds {
}
```
Infine aggiorna lo schema delle sfide in `curriculum/schema/challengeSchema.js`.
And finally, update the challenge schema in `curriculum/schema/challengeSchema.js`.
```js
videoLocaleIds: Joi.when('challengeType', {

View File

@@ -1,4 +1,4 @@
# Come aiutare con le sfide video
# How to Help with Video Challenges
Le sfide video sono un nuovo tipo di sfida nel programma di studi freeCodeCamp.
@@ -54,18 +54,18 @@ Altre risposte
Il numero della risposta corretta va qui.
````
## Creare domande per le sfide video
## Creating Questions for Video Challenges
### Accedi al file markdown della sfida video
### Access the Video Challenge Markdown Files
Puoi trovare i file markdown per le sfide video alle seguenti posizioni nel curriculum:
You can find the markdown files for video challenges at the following locations in the curriculum:
- [Analisi di dati con Python](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course)
- [Corso su TensorFlow 2.0](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/11-machine-learning-with-python/tensorflow)
- [Corso su Numpy](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/08-data-analysis-with-python/numpy)
- [Corso su come funzionano le reti neurali](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work)
- [Data Analysis with Python Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course)
- [TensorFlow 2.0 Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/11-machine-learning-with-python/tensorflow)
- [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/08-data-analysis-with-python/numpy)
- [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work)
Scegli un file markdown dalle opzioni sopra.
Pick a challenge markdown file from the options above.
### Guarda velocemente il video associato alla sfida e crea una domanda a scelta multipla
@@ -88,9 +88,9 @@ https://www.youtube.com/watch?v=nVAaxZ34khk
Guarda velocemente il video YouTube con quel `videoId` e pensa a una domanda a crocette basata sul contenuto del video.
### Aggiungere la domanda al file markdown
### Add the Question to the Markdown File
Puoi aggiungere la domanda localmente o usando l'interfaccia di GitHub. Per aggiungere la domanda localmente, è necessario [impostare freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md). Puoi anche trovare il file su GitHub e fare clic sul pulsante Modifica per aggiungere la domanda nel tuo browser.
You can add the question locally or using the GitHub interface. Per aggiungere la domanda localmente, è necessario [impostare freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md). Puoi anche trovare il file su GitHub e fare clic sul pulsante Modifica per aggiungere la domanda nel tuo browser.
Se una domanda non è ancora stata aggiunta a una sfida video, avrà la seguente domanda di default:
@@ -199,6 +199,6 @@ print(height/3)
Per altri esempi, puoi guardare i file markdown dei seguenti corsi video. Tutte le sfide che hanno già domande: [Corso Python per tutti](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody)
## Aprire una pull request
## Open a Pull Request
Dopo aver creato una o più domande, puoi fare un commit delle tue modifiche su un nuovo ramo e [aprire una pull request](how-to-open-a-pull-request.md).

View File

@@ -17,7 +17,7 @@ Alcuni esempi di ciò sono:
> [!NOTE] La tua PR dovrebbe essere rivolta a modifiche del solo curriculum inglese. Per contribuire alle traduzioni invece, leggi [questa guida](index.md#traduzioni).
## Preparare un buon titolo PR
## Prepare a Good PR Title
Si consiglia di utilizzare [Titolo e messaggi convenzionali](https://www.conventionalcommits.org/) per i commit e le pull request. La convenzione ha il seguente formato:
@@ -93,7 +93,7 @@ Alcuni esempi di buoni titoli di PR sono:
- Se la tua PR ha effetto sul comportamento di una pagina dovrebbe essere accompagnato da corrispondenti [test di integrazione di Cypress](how-to-add-cypress-tests.md).
## Feedback sulle pull request
## Feedback on Pull Requests
> :tada: Congratulazioni per avere creato un PR e grazie mille per aver dedicato il tuo tempo a contribuire.
@@ -103,13 +103,13 @@ E come sempre, poni liberamente le tue domande [nella categoria 'Contributors' s
> [!TIP] Se vuoi contribuire a più di una PR, ti raccomandiamo di leggere la [guida su fare modifiche e sincronizzare](how-to-setup-freecodecamp-locally.md#making-changes-locally) per evitare di dover cancellare il tuo fork.
## Conflitti su una pull request
## Conflicts on a Pull Request
I conflitti possono sorgere perché molti contributori lavorano sul repository e le modifiche possono interrompere la tua PR in attesa di una revisione e di un merge.
Spesso potresti non aver bisogno di un rebase, perché schiacciamo tutti i commit, tuttavia se è richiesto un rebase, ecco quello che dovresti fare.
### Per le solite correzioni di bug e funzionalità
### For Usual Bug Fixes and Features
Quando stai lavorando su normali bug e funzionalità sul nostro ramo di sviluppo `main`, puoi fare un semplice rebase:
@@ -138,7 +138,7 @@ Quando stai lavorando su normali bug e funzionalità sul nostro ramo di sviluppo
git push --force origin <pr-branch>
```
### Per il curriculum e le caratteristiche future
### For Upcoming Curriculum and Features
Quando stai lavorando su funzionalità dei rami `next-*` del nuovo curriculum, devi fare un cherry pick:

View File

@@ -39,7 +39,7 @@ Non sono necessarie altre azioni una volta che un file è stato revisionato.
> [!NOTE] Approvare una stringa in modalità di revisione la segnerà come completata e farà sì che sia scaricata nel prossimo pull da Crowdin a GitHub.
## Diventare un proofreader/revisore
## Becoming a Proofreader
Se hai domande o sei interessato a diventare proofreader, puoi contattarci nella [chat room per i contributori](https://discord.gg/PRyKn3Vbay). In genere diamo i permessi di revisore se è da un po' che contribuisci a freeCodeCamp.
@@ -47,7 +47,7 @@ Il nostro staff e i moderatori della community sono sempre alla ricerca di volon
> [!NOTE] Crowdin ti permette di approvare le tue traduzioni. In genere, è meglio permettere ad un altro proofreader di rivedere le tue proposte di traduzione per maggior sicurezza che non ci siano errori.
## Creare un canale su Chat per una lingua
## Creating a Channel on Chat for a World Language
Per la maggior parte, incoraggiamo l'uso della [chat room per i contributori](https://discord.gg/PRyKn3Vbay) per tutte le comunicazioni. Ma se il team di volontari per una certa lingua cresce, possiamo considerare di creare un canale aggiuntivo per la lingua.

Some files were not shown because too many files have changed in this diff Show More