chore(i8n,docs): processed translations (#41196)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
This commit is contained in:
@ -4,9 +4,13 @@ Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeC
|
||||
|
||||
### Can I translate freeCodeCamp's curriculum?
|
||||
|
||||
Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon.
|
||||
Yes - Read [this guide](/how-to-translate-files) if you are interested in contributing to translation.
|
||||
|
||||
Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish.
|
||||
Currently we have the user contributed translations being done in Chinese and Español.
|
||||
|
||||
At this time we are building our experience hosting the curriculum in the aforementioned languages. Eventually, we intend to localize freeCodeCamp into several major world languages, like: Arabic, Hindi, Portuguese, Russian and more.
|
||||
|
||||
We thank you for your patience while we iron out the workflow.
|
||||
|
||||
### How can I report a new bug?
|
||||
|
||||
@ -44,7 +48,7 @@ Please do create an issue if you want to discuss bigger aspects of the codebase
|
||||
|
||||
### How can I get an issue assigned to me?
|
||||
|
||||
We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone:
|
||||
We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone:
|
||||
|
||||
1. We are most likely to merge the first pull request that addresses the issue.
|
||||
2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider:
|
||||
|
@ -11,11 +11,11 @@
|
||||
- **Translation Contribution**
|
||||
- [Translating a Curriculum File](how-to-translate-files.md)
|
||||
- [Proofreading a Curriculum File](how-to-proofread-files.md)
|
||||
- [How to Translate the Website](how-to-translate-the-website.md)
|
||||
- **Optional Guides**
|
||||
- [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md)
|
||||
- [Set up freeCodeCamp on WSL](how-to-setup-wsl.md)
|
||||
- [Add Cypress tests](how-to-add-cypress-tests.md)
|
||||
- [How to Translate the Website](how-to-translate-the-website.md)
|
||||
|
||||
---
|
||||
|
||||
|
@ -16,13 +16,13 @@ This involves three steps to be followed in sequence:
|
||||
|
||||
#### 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 [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure.
|
||||
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.
|
||||
|
||||
This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release.
|
||||
|
||||
It is identical to our live production environment at `freeCodeCamp.org`, other than it using a separate set of databases, servers, web-proxies, etc. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms.
|
||||
|
||||
Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch.
|
||||
Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`prod-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/prod-current) branch.
|
||||
|
||||
This is the final release that moves changes to our production platforms on freeCodeCamp.org.
|
||||
|
||||
@ -94,10 +94,10 @@ Currently, only members on the developer team can push to the production branche
|
||||
npm run clean-and-develop
|
||||
```
|
||||
|
||||
5. Move changes from `main` to `production-staging` via a fast-forward merge
|
||||
5. Move changes from `main` to `prod-staging` via a fast-forward merge
|
||||
|
||||
```
|
||||
git checkout production-staging
|
||||
git checkout prod-staging
|
||||
git merge main
|
||||
git push upstream
|
||||
```
|
||||
@ -106,12 +106,10 @@ Currently, only members on the developer team can push to the production branche
|
||||
>
|
||||
> If they do, you may have done something incorrectly and you should just start over.
|
||||
|
||||
The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later.
|
||||
The 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.
|
||||
|
||||
> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total.
|
||||
|
||||
### Pushing changes to Production Applications.
|
||||
|
||||
The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment.
|
||||
@ -121,19 +119,19 @@ The process is mostly the same as the staging platforms, with a few extra checks
|
||||
| |
|
||||
|
||||
|
||||
1. Make sure your `production-staging` branch is pristine and in sync with the upstream.
|
||||
1. Make sure your `prod-staging` branch is pristine and in sync with the upstream.
|
||||
|
||||
```sh
|
||||
git checkout production-staging
|
||||
git checkout prod-staging
|
||||
git fetch --all --prune
|
||||
git reset --hard upstream/production-staging
|
||||
git reset --hard upstream/prod-staging
|
||||
```
|
||||
|
||||
2. Move changes from `production-staging` to `production-current` via a fast-forward merge
|
||||
2. Move changes from `prod-staging` to `prod-current` via a fast-forward merge
|
||||
|
||||
```
|
||||
git checkout production-current
|
||||
git merge production-staging
|
||||
git checkout prod-current
|
||||
git merge prod-staging
|
||||
git push upstream
|
||||
```
|
||||
|
||||
@ -141,9 +139,7 @@ The process is mostly the same as the staging platforms, with a few extra checks
|
||||
>
|
||||
> If they do, you may have done something incorrectly and you should just start over.
|
||||
|
||||
The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline.
|
||||
|
||||
> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete.
|
||||
The above steps will automatically trigger a run on the build pipeline for the `prod-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline.
|
||||
|
||||
**Additional Steps for Staff Action**
|
||||
|
||||
@ -158,21 +154,18 @@ For staff use:
|
||||
| |
|
||||
|
||||
|
||||
Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live.
|
||||
|
||||
> [!TIP|label:Estimates] The release run typically takes ~15-20 mins for each client instance, and ~5-10 mins for each API instance to be available live. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval).
|
||||
Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers.
|
||||
|
||||
## Build, Test and Deployment Status
|
||||
|
||||
Here is the current test, build and deployment status of the codebase.
|
||||
|
||||
| Type | Branch | Status | Dashboard |
|
||||
|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- |
|
||||
| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) |
|
||||
| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
|
||||
| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) |  | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
|
||||
| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) |
|
||||
| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
|
||||
| Branch | Unit Tests | Integration Tests | Builds & Deployments |
|
||||
|:-------------------------------------------------------------------------------- |:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |:--------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| [`main`](https://github.com/freeCodeCamp/freeCodeCamp/tree/main) | [](https://github.com/freeCodeCamp/freeCodeCamp/actions?query=workflow%3A%22Node.js+CI%22) | [](https://dashboard.cypress.io/projects/ke77ns/analytics/runs-over-time) | - |
|
||||
| [`prod-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/prod-staging) | [](https://github.com/freeCodeCamp/freeCodeCamp/actions?query=workflow%3A%22Node.js+CI%22+branch%3Aprod-staging) | [](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-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/prod-staging) | [](https://github.com/freeCodeCamp/freeCodeCamp/actions?query=workflow%3A%22Node.js+CI%22+branch%3Aprod-current) | [](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
|
||||
|
||||
@ -186,15 +179,25 @@ We thank you for reporting bugs that you encounter and help in making freeCodeCa
|
||||
|
||||
Currently a public beta testing version is available at:
|
||||
|
||||
<h1 align="center"><a href='https://www.freecodecamp.dev' _target='blank'>freecodecamp.dev</a></h1>
|
||||
| Application | Language | URL |
|
||||
|:----------- |:-------- |:---------------------------------------- |
|
||||
| Learn | English | <https://www.freecodecamp.dev> |
|
||||
| | Espanol | <https://www.freecodecamp.dev/espanol> |
|
||||
| | Chinese | <https://chinese.freecodecamp.dev> |
|
||||
| News | English | <https://www.freecodecamp.dev/news> |
|
||||
| Forum | English | <https://forum.freecodecamp.dev> |
|
||||
| | Chinese | <https://chinese.freecodecamp.dev/forum> |
|
||||
| API | - | `https://api.freecodecamp.dev` |
|
||||
|
||||
> [!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.
|
||||
|
||||
### Identifying the current version of the platforms
|
||||
|
||||
**The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).**
|
||||
|
||||
The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site.
|
||||
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://chat.freecodecamp.org/channel/contributors) for a confirmation.
|
||||
|
||||
@ -220,7 +223,7 @@ There are some known limitations and tradeoffs when using the beta version of th
|
||||
|
||||
## Reporting issues and leaving feedback
|
||||
|
||||
Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage.
|
||||
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.
|
||||
|
||||
@ -538,7 +541,7 @@ Provisioning VMs with the Code
|
||||
```console
|
||||
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
|
||||
cd freeCodeCamp
|
||||
git checkout production-current # or any other branch to be deployed
|
||||
git checkout prod-current # or any other branch to be deployed
|
||||
```
|
||||
|
||||
4. Create the `.env` from the secure credentials storage.
|
||||
|
@ -6,38 +6,78 @@ To learn how to write Cypress tests, or 'specs', please see Cypress' official [d
|
||||
|
||||
> Note: When writing tests for freeCodeCamp, remember to add `/* global cy */` to the top of the file to avoid ESLint issues.
|
||||
|
||||
### 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
|
||||
|
||||
**1. Ensure that MongoDB and client applications are running**
|
||||
> [!NOTE] If using GitPod, please see [Cypress-GitPod Setup](/how-to-add-cypress-tests#cypress-gitpod-setup)
|
||||
|
||||
- [Start MongoDB and seed the database](/how-to-setup-freecodecamp-locally#step-3-start-mongodb-and-seed-the-database)
|
||||
### 1. Ensure that MongoDB and client applications are running
|
||||
|
||||
- [Start the freeCodeCamp client application and API server](/how-to-setup-freecodecamp-locally#step-4-start-the-freecodecamp-client-application-and-api-server)
|
||||
- [Start MongoDB and seed the database](/how-to-setup-freecodecamp-locally#step-3-start-mongodb-and-seed-the-database)
|
||||
|
||||
**2. Run the cypress tests**
|
||||
- [Start the freeCodeCamp client application and API server](/how-to-setup-freecodecamp-locally#step-4-start-the-freecodecamp-client-application-and-api-server)
|
||||
|
||||
To run tests against production builds, replace `dev` with `prd` below.
|
||||
### 2. Run the cypress tests
|
||||
|
||||
- To run all tests in the `./cypress` directory:
|
||||
To run tests against production builds, replace `dev` with `prd` below.
|
||||
|
||||
```console
|
||||
npm run cypress:dev:run
|
||||
```
|
||||
- To run all tests in the `./cypress` directory:
|
||||
|
||||
- To run a single test:
|
||||
```console
|
||||
npm run cypress:dev:run
|
||||
```
|
||||
|
||||
```console
|
||||
npm run cypress:dev:run -- --spec=cypress/pathToYourSpec/youSpecFileName.js
|
||||
```
|
||||
- To run a single test:
|
||||
|
||||
- To create a development build, start the development server, and run all existing cypress end-to-end tests:
|
||||
```console
|
||||
npm run cypress:dev:run -- --spec=cypress/pathToYourSpec/youSpecFileName.js
|
||||
```
|
||||
|
||||
```console
|
||||
npm run e2e:dev:run
|
||||
```
|
||||
- To create a development build, start the development server, and run all existing cypress end-to-end tests:
|
||||
|
||||
```console
|
||||
npm run e2e:dev:run
|
||||
```
|
||||
|
||||
## Cypress-GitPod Setup
|
||||
|
||||
### 1. Ensure you are on the _Feature Preview_ of GitPod _as of 01/02/2021_
|
||||
|
||||
- Go to [GitPod Docs - Feature Preview](https://www.gitpod.io/docs/feature-preview/) to see how to enable _Feature Preview_
|
||||
|
||||
### 2. Ensure Development Environment is Running
|
||||
|
||||
If starting the GitPod environment did not automatically develop the environment:
|
||||
|
||||
- Start the database
|
||||
|
||||
```console
|
||||
mongod
|
||||
```
|
||||
|
||||
- Seed the database
|
||||
|
||||
```console
|
||||
npm run seed
|
||||
```
|
||||
|
||||
- Develop the server and client
|
||||
|
||||
```console
|
||||
npm run develop
|
||||
```
|
||||
|
||||
### 3. Install Cypress Build Tools
|
||||
|
||||
```console
|
||||
npm run cypress:install-build-tools
|
||||
```
|
||||
|
||||
- When prompted in the terminal, select your keyboard layout by language/area
|
||||
|
||||
Now, [Cypress can be run](/how-to-add-cypress-tests#_2-run-the-cypress-tests)
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR.
|
||||
|
||||
> [!NOTE] Your PR should be in English. See [here](#index.md?id=translations) for how to contribute translations.
|
||||
|
||||
## 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:
|
||||
|
@ -1,40 +1,40 @@
|
||||
# How to Proofread Translations
|
||||
# 如何校对译文
|
||||
|
||||
Our proofreading team is responsible for ensuring that translations accurately reflect the source text.
|
||||
我们的校对团队负责确保译文准确地反映了源文件的意思。
|
||||
|
||||
To begin proofreading, visit [our translation site](https://translate.freecodecamp.org) and login. Then select "Go to console" in the top navigation bar to switch from the public view to the workspace view.
|
||||
访问并登录[我们的翻译网站](https://translate.freecodecamp.org),开始校对。 然后,在顶部导航栏中选择“Go to console”,从公共视图(public view)切换到工作区视图(workspace view)。
|
||||
|
||||
## Select a File
|
||||
## 选择文件
|
||||
|
||||
You should see the list of projects you have been granted access to. Select the project that you would like to proofread, then select the language.
|
||||
你将看到你已被授予访问权限的项目列表。 选择你想参与校对的项目,然后选择你要校对的语言版本。
|
||||
|
||||

|
||||

|
||||
|
||||
You should now see the list of available files. Choose your file by selecting the `Proofread` button on the right of that file, then choosing `Proofreading` from the drop-down menu that appears.
|
||||
在文件列表中, 通过点击文件右侧的 `Proofread` 按钮选择你要校对的文件,然后从出现的下拉菜单中选择 `Proofreading`。
|
||||
|
||||
> [!NOTE] If you are in this workspace view, but want to work on [translating a file](./how-to-translate-files.md) instead of proofreading, you may select `Crowdsourcing` from the dropdown menu instead.
|
||||
> [!NOTE] 如果你在工作区视图(workspace view)中,但想要[翻译文件](./how-to-translate-files.md),而不是校对文件,那么你可以从下拉菜单中选择 `Crowdsourcing`。
|
||||
|
||||
## Proofread Translations
|
||||
## 校对译文
|
||||
|
||||

|
||||

|
||||
|
||||
<!--Add proofread/crowdsource button to the image-->
|
||||
|
||||
Here you will see the list of strings in the selected file, with their related translations. The translation that is displayed here is the translation that has received the highest score (between upvotes and downvotes) from the translation community.
|
||||
接着,你将看到所选文件中的字符串列表及其译文。 此处显示的译文是翻译社区评分最高(基于赞同和反对票)的译文。
|
||||
|
||||
While you can view *all* proposed translations for a given string, the community scores (determined by the upvotes and downvotes) should be taken into consideration when choosing which translation to approve. The community can review proposed translations and recommend which one is most accurate and clear.
|
||||
你可以查看某个字符串的*所有*建议的译文,在确认选用哪个译文时,你应当结合社区评分(基于赞同和反对票)来确认。 社区可以审核建议的译文,并推荐其中最准确、最清晰的一个。
|
||||
|
||||
1. This is the original string (in English).
|
||||
2. This is the matching translated string. The most popular translation proposal, based on upvotes and downvotes, will be displayed here.
|
||||
3. Clicking this checkmark button will approve that translation.
|
||||
4. Crowdin will display the status of each string. `Done` means a translation has been approved and will be downloaded on our next Crowdin pull. `Todo` means the string has not been proofread. `Hidden` means the string is locked and *should not be translated*. `Comment` means the string has a related comment.
|
||||
5. Translations can be selected with the checkboxes and approved here in one bulk action.
|
||||
6. You can view the community proposed translations, their popularity scores, and Crowdin suggested translations here.
|
||||
7. This button shows/hides the right-hand side display pane, where you can view translations, comments, translation memory, and glossary terms.
|
||||
8. Crowdin displays error messages here from the quality assurance checks. In other words, if something does not seem correct in the translation, Crowdin will notify you. These translations should be approved with care.
|
||||
1. 这是源文件的字符串(英文)。
|
||||
2. 这是相匹配的翻译的字符串。 此处将显示基于赞同和反对票数的最受欢迎的译文建议。
|
||||
3. 点击这个选择标记按钮确认该译文。
|
||||
4. Crowdin 将显示每个字符串的状态。 `Done` 的意思是已经确认了译文,我们将在下次从 Crowdin 拉取内容的时候下载已确认的译文。 `Todo` 的意思是字符串的译文还未被校对确认。 `Hidden` 的意思是字符串是被锁定的,*不应该被翻译*。 `Comment` 的意思是对此字符串有评论消息。
|
||||
5. 可以使用复框选择多条译文,并在此处一次性批量确认。
|
||||
6. 你可以在此处查看社区建议的译文,社区对其的评分,以及 Crowdin 建议的译文。
|
||||
7. 这个按钮显示/隐藏右侧的显示窗口,你可以在其中查看翻译、评论、翻译记忆和词汇表术语。
|
||||
8. Crowdin 在此处显示来自质量保证检查的报错消息。 也就是说,如果译文中有不正确的地方,Crowdin 会通知你。 请仔细校对确认出现报错消息的译文。
|
||||
|
||||
> [!WARNING] 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.
|
||||
> [!WARNING] 校对确认之后的字符串会被标注为已完成。我们将在下一次从 Crowdin 拉取内容时下载这些字符串。
|
||||
|
||||
No additional actions are required once a file has been proofread. If you have any questions, or are interested in becoming a proofreader, feel free to reach out to us in our [translators chat room](https://chat.freecodecamp.org/channel/translators).
|
||||
当文件被校对确认完毕,你不需要采取其他任何行动。 如果你有任何问题,或者感兴趣成为一名校对贡献者,请随时在[译者交流群](https://chat.freecodecamp.org/channel/translators)联系我们。
|
||||
|
||||
> [!NOTE] Crowdin will allow you to approve your translations. In general, it is best to allow another proofreader to review your proposed translations as extra safety to ensure there are no errors.
|
||||
> [!NOTE] Crowdin 会允许你校对你自己的译文。 一般来说,最好是让另一位校对者审核你的译文,以确保最终内容的准确性。
|
||||
|
@ -1,88 +1,84 @@
|
||||
# How to Translate a File
|
||||
# 如何翻译文件
|
||||
|
||||
> [!NOTE] All translations are handled through https://translate.freecodecamp.org - we are no longer using GitHub to translate files directly.
|
||||
> [!NOTE] 所有翻译都在 https://translate.freecodecamp.org 进行——我们不再使用 GitHub 直接翻译文件。
|
||||
|
||||
To begin, head to our translation website and login (if you have not contributed to translations before, you will need to create an account).
|
||||
首先,请访问并登录我们的翻译网站(如果你之前没有参与过翻译协作,那么你需要新建一个账号)。
|
||||
|
||||
## Select a Project and File
|
||||
## 选择项目和文件
|
||||
|
||||
You should see two "projects" available for translation: The `Contributing Documentation` project, which contains the files for this documentation site, and the `Coding Curriculum` project, which contains our challenge files for `/learn`.
|
||||
你应该可以看到两个“项目”可供翻译:`Contributing Documentation` 项目,包含本文档网站的所有文件;`Coding Curriculum` 项目,包含 `/learn` 的课程文件。
|
||||
|
||||
Select which project you want to contribute to, and you will see a list of available languages for translation.
|
||||
选择你想参与贡献的项目,然后你会看到不同语言版本的可翻译文件列表。
|
||||
|
||||

|
||||

|
||||
|
||||
Select the language you want to work on, and you will see the complete file tree.
|
||||
选择你想参与翻译的语言,然后你会看到完整的文件列表。
|
||||
|
||||

|
||||

|
||||
|
||||
Each file and folder will show a progress bar. The **blue** portion of the progress bar indicates what percentage of the file has been translated, while the **green** portion of the progress bar indicates what percentage of the file has been approved by the proofreading team.
|
||||
每个文件和文件夹都会显示一个进度条。 进度条的**蓝色**部分表示多少百分比的文件已经被翻译了,而**绿色**部分表示多少百分比的文件已经被校对团队审核确认。
|
||||
|
||||
Select a file to work on and Crowdin will open the editor view.
|
||||
选择你想翻译的文件,然后 Crowdin 会打开编辑界面。
|
||||
|
||||
## Translate the File
|
||||
> [!NOTE] 打开编辑界面后,你需要点击设置图标(右上角的齿轮状图标),将 “HTML tags displaying” 设置为 “SHOW”。 这样,文件中会显示 `<code></code>` 标签,而不是 `<0></0>` 标签。
|
||||
|
||||

|
||||
## 翻译文件
|
||||
|
||||
Crowdin separates a document into translatable "strings", usually sentences. Each string is translated individually. Referring to the image above:
|
||||

|
||||
|
||||
1. A string highlighted in green already has a proposed translation.
|
||||
2. A string highlighted in red does _not_ have a proposed translation.
|
||||
3. A string with greyed out text is not translatable. This is the case for code blocks and other content that must not be translated. You will be unable to select these strings in the editor.
|
||||
4. If a contributor has proposed a translation to a string, Crowdin will display those proposals here. You will not be able to save an identical translation - instead, if a translation is accurate, you should click the `+` icon to "upvote" it. An inaccurate translation can be "downvoted" with the `-` icon.
|
||||
5. Crowdin will recommend translations based on Translation Memory (TM) or Machine Translation (MT). Translation Memory refers to similar or identical strings that we have translated/approved in other files. Machine Translation refers to translations recommended by their integrated library.
|
||||
6. This is the editor pane, where you may write your proposed translation for the selected string.
|
||||
7. The currently selected string in the editor will be highlighted in yellow.
|
||||
8. Here you will see tags indicating the state of the string. `Done` means the string has at least one proposed translation. `Todo` means the string does not have any proposed translations.
|
||||
9. Here you can see the comments window. If you have questions or concerns about a particular string, you can leave a comment on the string here for other translators to see.
|
||||
10. These two "pane" buttons will hide the left (document) and right (comments) views.
|
||||
Crowdin 将一个文件分割成“字符串”(通常是一个个句子),以供翻译。 请单独翻译每个字符串。 在上图中:
|
||||
|
||||
> [!NOTE] If you see a hidden string that includes translations, please notify us in the [translators chat room](https://chat.freecodecamp.org/channel/translators) so we can remove the translation from memory.
|
||||
1. 标注为绿色的字符串已经有建议的译文。
|
||||
2. 标注为红色的字符串_没有_建议的译文。
|
||||
3. 显示为灰色的内容是不能翻译的。 这些内容是代码块或其他内容,是不可修改的。 你不能在编辑框中选中这些字符串。
|
||||
4. 如果某位贡献者对某个字符串有建议的译文,那么 Crowdin 将在此处显示所有的建议。 你无法保存相同的译文。如果某个译文是正确的,那么你可以点击 `+` 图标,给它投票表示赞同。 如果你觉得某个译文不正确,那么你可以点击 `-` 图标,投反对票。
|
||||
5. Crowdin 将基于翻译记忆(TM)或机器翻译(MT)推荐译文。 翻译记忆是指我们已在其他文件中翻译过/批准过的相似的或相同的字符串。 机器翻译是指由 Crowdin 系统推荐的翻译。
|
||||
6. 这是编辑器窗口,你可以在其中输入你对于所选字符串建议的译文。
|
||||
7. 编辑窗口当前选中的字符串将被标注为黄色。
|
||||
8. 这里的标签是表示字符串的状态。 `Done` 标签表示字符串有至少一个建议的译文。 `Todo` 标签表示字符串还没有建议的译文。
|
||||
9. 这里是评论窗口。 如果你对某个字符串有疑问或疑虑,可以在此处对字符串发表评论,以便其他翻译人员查看。
|
||||
10. 点击这两个“窗格”按钮,可以隐藏左边的(文件)视图和右边的(评论)视图。
|
||||
|
||||
When you have completed a translation for a string, select the `Save` button to store your translation on Crowdin. Other contributors will then be able to vote on your translation and proofreaders will be able to approve it.
|
||||
> [!NOTE] 如果你看到一个被隐藏的(即灰色的)字符串有对应的译文,请在[译者交流群](https://chat.freecodecamp.org/channel/translators)告诉我们,我们会移除翻译记忆中的译文。
|
||||
|
||||
You are welcome to translate as many strings as you like - there are no additional steps required when you complete a full file or propose a new translation. Clicking the `Save` button is all that is needed to store a translation.
|
||||
当你翻译完一个字符串,请点击 `Save` 按钮,将你的译文储存在 Crowdin 中。 然后其他贡献者可以给你的译文投票,而校对者也将审核确认你的译文。
|
||||
|
||||
> [!NOTE] If you see something in the English source file that is inaccurate or incorrect, please do not fix it through the translation flow. Instead, leave a comment on the string to notify us that there is a discrepancy, or create a GitHub issue.
|
||||
你想翻译多少字符串,都可以,我们非常欢迎你贡献!当你翻译完某个文件或某个字符串之后,你不需要采取其他步骤。 你只需要点击 `Save` 按钮,就能保存你的译文了。
|
||||
|
||||
### Translating Documentation
|
||||
> [!NOTE] 如果你发现在英语源文件中有不正确的内容,请不要在翻译流程中对其进行修改。 请在字符串上留下评论,通知我们有什么问题,或者在 GitHub 创建 issue。
|
||||
|
||||
Translating our contributing documentation is a similar flow to translating our curriculum files.
|
||||
### 翻译文档
|
||||
|
||||
> [!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.
|
||||
翻译贡献文档的流程和翻译课程文件的流程类似。
|
||||
|
||||
## Rate Translations
|
||||
> [!NOTE] 我们的贡献文档由` docsify `提供支持,并且我们消息框(比如这份文档里的)进行了特殊的解析。 如果你看到以 `[!NOTE]`、`[!WARNING]` 或 `[!TIP]` 开头的字符串,请注意不要翻译这些单词。
|
||||
|
||||
Crowdin allows you to rate the existing proposed translations. If you attempt to save a translation, you may see a message indicating that you cannot save a duplicate translation - this means another contributor has proposed that identical translation. If you agree with that translation, click the `+` button to "upvote" the translation.
|
||||
## 给译文评分
|
||||
|
||||
If you see a translation that is inaccurate or does not provide the same clarity as the original string, click the `-` button to "downvote" the translation.
|
||||
Crowdin 允许你对已有的建议译文进行评分。 在你尝试保存译文的时候,你可能会看到一条消息,提示你无法保存重复的译文——这意味着另一位贡献者已经建议了相同的译文。 如果你赞同那个译文,可以点击 `+` 按钮来投票赞同它。
|
||||
|
||||
Crowdin uses these votes to give a score to each proposed translation for a string, which helps the proofreading team determine which translation is the best fit for each string.
|
||||
如果你认为译文不正确或与源文件字符串的意思不一致,请单击 `-` 按钮投反对票。
|
||||
|
||||
## Quality Assurance Checks
|
||||
Crowdin 通过这些投票为一个字符串的每个建议译文给出一个分数,这有助于校对团队确定哪个译文是最准确的。
|
||||
|
||||
We have enabled some quality assurance steps that will verify a translation is as accurate as possible - this helps our proofreaders review proposed translations.
|
||||
## 质量保证检查
|
||||
|
||||
When you attempt to save a translation, you may see a warning message appear with a notification regarding your proposed translation.
|
||||
我们采用了一些质量保证步骤,以确保译文尽可能准确——这有助于我们的校对贡献者审核建议的译文。
|
||||
|
||||

|
||||
当你尝试保存翻译时,你可能会看到一条警告消息,其中包含关于你所建议的翻译的通知。
|
||||
|
||||
This message appears when Crowdin's QA system has identified a potential error in the proposed translation. In this example, we have modified the text of a `<code>` tag and Crowdin has caught that.
|
||||

|
||||
|
||||
> [!WARNING] You have the option to save a translation in spite of errors, but this should be done only in circumstances where the error might be incorrect.
|
||||
当 Crowdin 的质量保证检查系统在建议的译文中发现可能的错误时,将显示此消息。 在这个例子中,我们修改了 `<code>` 标签的文本内容,Crowdin 会发现这个问题。
|
||||
|
||||
Crowdin will sometimes convert HTML tags (such as `<code>`) into numerical values, like `<0>text</0>` or `<1>text</1>`. These tags are usually code tags, and our QA check will verify that these have not been translated. However, sometimes these may be `<strong>` or `<em>` tags, which _should_ be translated. If you hover over a numerical tag in the source string, you can see which HTML tag or tags have been replaced:
|
||||
> [!WARNING] 即使 Crowdin 提示有错误,你也可以选择保存译文。 如果你仍要通过点击 “Save Anyway” 保存译文,那么你应该标记(@)校对人员或项目经理,说明为什么需要忽略质量检查消息。
|
||||
|
||||

|
||||
## 翻译最佳实践
|
||||
|
||||
If the replaced tags are something that should be translated (such as `strong` tags), translate the content within the tags and select "Save Anyway" when the error appears. Then leave a comment on the string explaining that the tags are `strong` (for example) so other translators and proofreaders are aware that they should be translated.
|
||||
请遵循下列准则,以确保我们的翻译尽可能的准确:
|
||||
|
||||
## Translation Best Practices
|
||||
- 不要翻译 `<code>` 标签中的内容。 这个标签表示在文本在代码中,应保留英文文本。
|
||||
- 不要添加额外的内容。 如果你认为源文件的文本内容或其他信息需要修改,那么请你在 GitHub issue 或 pull request 来提出更改建议。
|
||||
- 不要更改内容的顺序。
|
||||
|
||||
Follow these guidelines to ensure our translations are as accurate as possible:
|
||||
|
||||
- Do not translate the content within `<code>` tags. These tags indicate text that is found in code and should be left in English.
|
||||
- Do not add additional content. If you feel a challenge requires changes in the text content or additional information, you should propose the changes through a GitHub issue or a pull request that modifies the English file.
|
||||
- Do not change the order of content.
|
||||
|
||||
If you have any questions, feel free to reach out to us in our [translators chat room](https://chat.freecodecamp.org/channel/translators) and we will be happy to assist you.
|
||||
如果你有任何问题,欢迎你随时在[译者交流群](https://chat.freecodecamp.org/channel/translators)提出,我们很高兴给予你支持。
|
||||
|
@ -1,6 +1,6 @@
|
||||
The client/react side of our website is translated into various world languages using [react-i18next](https://react.i18next.com/) and [i18next](https://www.i18next.com/).
|
||||
|
||||
> [!NOTE] This does not include the curriculum
|
||||
> [!NOTE] Curriculum lesson content is [translated separately](./how-to-translate-files.md).
|
||||
|
||||
## File Structure
|
||||
|
||||
@ -8,7 +8,13 @@ The files for translating the website are located in the `client/i18n` folder. E
|
||||
|
||||
The values in the `translations.json` file contain the majority of the text that appears on the website. 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 `motivation.json` files are not required to have the same quotes, compliments, or array length. Just the same JSON structure.
|
||||
The `intro.json` file contains the key-value pairs for the introduction text on the certification pages.
|
||||
|
||||
The `motivation.json` files are not required to have the same quotes, compliments, or array length. Just the same JSON structure. These are not translated via Crowdin.
|
||||
|
||||
The `trending.json` file contians the titles and links for the trending news articles in the website's footer. These are not translated via Crowdin.
|
||||
|
||||
The `meta-tags.json` file contains the information for our website's meta tag information. These are not translated via Crowdin.
|
||||
|
||||
## Adding a Language
|
||||
|
||||
@ -18,16 +24,9 @@ In the `allLangs.js` file, add the language to the `client` array in the first v
|
||||
|
||||
## How to Translate
|
||||
|
||||
After a new language is added, you just need to translate the JSON files into the language.
|
||||
Translating the `intro.json` and `translations.json` are done through [our translation site](https://translate.freecodecamp.org). View our [translation documentation for that site](/how-to-translate-files.md).
|
||||
|
||||
Here are some tips:
|
||||
- Only translate the values in the JSON files, the keys need to stay the same
|
||||
- The English versions of the JSON files are the "source of truth" for what needs to be translated. If you are unsure what text to translate, find the matching key in the English version of the file and translate that text
|
||||
- Be sure to escape double quotes (`\"`) in the strings if you need to use them
|
||||
- Most of the time, when you see text wrapped in number tags (`<0>`text`</0>`) tags, it's a link. It is okay to change the text that it is wrapped around. Just keep the same tags.
|
||||
- A value that has something like `{{value}}` in it is a variable. Don't change any of those characters. You can move that whole group of characters around though.
|
||||
|
||||
There's some [help on how make changes and open a PR here](/how-to-setup-freecodecamp-locally).
|
||||
Modifications to the `trending.json`, `meta-tags.json`, and `motivation.json` files should typically only be done by staff.
|
||||
|
||||
## Running it Locally
|
||||
|
||||
@ -179,19 +178,23 @@ const email = 'team@freecodecamp.org';
|
||||
|
||||
In the above example, the key and a variable are set in the attributes of the `Trans` component. `{{ email }}` needs to be somewhere in the `Trans` component as well, it doesn't matter where.
|
||||
|
||||
## Changing Text
|
||||
|
||||
To change text on the client side of things, go to the relevant `.json` file, find the key that is being used in the React component, and change the value to the new text you want. You should search the codebase for that key to make sure it isn't being used elsewhere. Or, if it is, that the changes make sense in all places.
|
||||
|
||||
## Adding Text
|
||||
|
||||
If the text you want to add to the client exists in the relevant `.json` file, use the existing key. Otherwise, create a new key.
|
||||
|
||||
The matching filename`-schema.js` file is the "source of truth" for all of the `.json` files sharing the same name. If you need to add a new key, add it there. Then, add the key to **all** of the `translations.json` files.
|
||||
|
||||
> [!NOTE] Use English text for all languages if the file is translated through Crowdin. The tests will fail if you don'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.
|
||||
|
||||
## Helpful Documentation
|
||||
|
||||
- [react-i18next docs](https://react.i18next.com/latest/usetranslation-hook)
|
||||
- [i18next docs](https://www.i18next.com/translation-function/essentials)
|
||||
|
||||
## Changing Text
|
||||
|
||||
To change text on the client side of things, go to the `translations.json` file, find the key that is being used in the react component, and change the value to the new text you want. You should search the codebase for that key to make sure it isn't being used elsewhere. Or, if it is, that the changes make sense in all places.
|
||||
|
||||
## Adding Text
|
||||
|
||||
If the text you want to add to the client exists in the `translations.json` file, use the existing key. No sense in creating another one.
|
||||
|
||||
The `translations-schema.js` file is the "source of truth" for all of the `translations.json` files. If you need to add a new key, add it there. Then, add the key to **all** of the `translations.json` files with placeholder text in the langauges you don't know. The tests will fail if you don'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.
|
||||
|
@ -8,7 +8,7 @@ You are welcome to:
|
||||
|
||||
- Create, update and fix bugs in our [curriculum](#curriculum).
|
||||
- Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform).
|
||||
- _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages.
|
||||
- [Help us translate](#translations) freeCodeCamp.org to world languages.
|
||||
|
||||
We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md).
|
||||
|
||||
@ -20,6 +20,14 @@ You can help expand and improve the curriculum. You can also update project user
|
||||
|
||||
**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).**
|
||||
|
||||
## Translations
|
||||
|
||||
We are localizing freeCodeCamp.org to world languages starting with Chinese and Espanol. We will be expanding the translations to more languages. It's our dream to provide you with 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/).
|
||||
|
||||
**If you're interested in translating, here are the guides to translate our [curriculum](how-to-translate-files.md), the [learning platform](how-to-translate-the-website.md) and our [Contributing guidelines](https://translate.freecodecamp.org/contributing-docs).**
|
||||
|
||||
## Learning Platform
|
||||
|
||||
Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more.
|
||||
|
@ -225,9 +225,9 @@ Discord Bans are global - you cannot ban a user from a specific channel, only fr
|
||||
|
||||
There may be situations where you need to address a concern with a camper privately. This should not be done through DMs, as this can lead to situations where you claim one thing and the camper claims another. Instead, use the bot's functionality to create a private discussion:
|
||||
|
||||
- Call the `!fCC moderate private @username` command, where `@username` is the *Discord mention* of the user. If you are calling this command from a private channel (such as #mod-chat), you will need to parse the mention manually: Ensure you have Developer Mode turned on in your Discord settings, then right-click on the user's avatar and select `Copy ID`. Replace the `@username` parameter with `<@!ID>`, where `ID` is the value you copied earlier. The result should look like: `!fCC moderate private <@!465650873650118659>`.
|
||||
- Call the `!fCC moderate private @username` command, where `@username` is the _Discord mention_ of the user. If you are calling this command from a private channel (such as #mod-chat), you will need to parse the mention manually: Ensure you have Developer Mode turned on in your Discord settings, then right-click on the user's avatar and select `Copy ID`. Replace the `@username` parameter with `<@!ID>`, where `ID` is the value you copied earlier. The result should look like: `!fCC moderate private <@!465650873650118659>`.
|
||||
- The bot will create a new channel under the `private` category and add the `@username`-mentioned camper and all moderators with the `Your Friendly Moderator` role. While all moderators are added to the channel for transparency, the moderator who calls this command should be the only one to interact with the camper unless they request assistance.
|
||||
- When the conversation is complete, call the `!fCC moderate close` command *in the private channel* to have the bot close and delete that channel.
|
||||
- When the conversation is complete, call the `!fCC moderate close` command _in the private channel_ to have the bot close and delete that channel.
|
||||
|
||||
4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations:
|
||||
|
||||
@ -364,14 +364,14 @@ Feel free to reference the [contributing guidelines](https://contribute.freecode
|
||||
|
||||
### Syncing Fork
|
||||
|
||||
> When PR is not up to date with the `master` branch.
|
||||
> When PR is not up to date with the `main` branch.
|
||||
|
||||
````markdown
|
||||
Hey @username
|
||||
|
||||
We would love to be able to merge your changes but it looks like the branch is not up to date. ⚠️
|
||||
|
||||
To resolve this error, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo.
|
||||
To resolve this error, you will have to sync the latest changes from the `main` branch of the `freeCodeCamp/freeCodeCamp` repo.
|
||||
|
||||
Using the command line, you can do this in three easy steps:
|
||||
|
||||
|
@ -4,47 +4,51 @@ Lee nuestra ["Guía de como contribuir a Open Source"](https://github.com/freeCo
|
||||
|
||||
### ¿Puedo traducir el currículum de freeCodeCamp?
|
||||
|
||||
Sí. Pronto implementaremos las herramientas para traducir el plan de estudios de freeCodeCamp.
|
||||
Yes - Read [this guide](/how-to-translate-files) if you are interested in contributing to translation.
|
||||
|
||||
Con el tiempo, tenemos la intención de traducir freeCodeCamp en varios idiomas mundiales importantes, comenzando con: Árabe, Chino, Hindi, Portugués, Ruso y Español.
|
||||
Currently we have the user contributed translations being done in Chinese and Español.
|
||||
|
||||
At this time we are building our experience hosting the curriculum in the aforementioned languages. Eventually, we intend to localize freeCodeCamp into several major world languages, like: Arabic, Hindi, Portuguese, Russian and more.
|
||||
|
||||
We thank you for your patience while we iron out the workflow.
|
||||
|
||||
### ¿Cómo puedo reportar un nuevo error?
|
||||
|
||||
Si crees que has encontrado un error, primero lee el artículo ["Ayuda, he encontrado un bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) y sigue sus instrucciones.
|
||||
If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions.
|
||||
|
||||
Si estas seguro de que es un nuevo error, sigue adelante y crea una nueva propuesta en GitHub. Asegúrate de incluir tanta información como sea posible para que podamos reproducir el error. Tenemos una plantilla de propuestas predefinida para ayudarte en esto.
|
||||
If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this.
|
||||
|
||||
Ten en cuenta que estos reportes en GitHub son para discusiones y problemas relacionados con la base de código, no para obtener ayuda para aprender a programar. Cada vez que tengas dudas, deberías [buscar ayuda en el foro](https://forum.freecodecamp.org) antes de crear un reporte en GitHub.
|
||||
Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue.
|
||||
|
||||
### ¿Cómo puedo informar sobre un problema de seguridad?
|
||||
|
||||
Por favor, no crees propuestas de GitHub para problemas de seguridad. En su lugar, por favor envía un correo electrónico a `security@freecodecamp.org` y lo estudiaremos inmediatamente.
|
||||
Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately.
|
||||
|
||||
### Soy un estudiante. ¿Puedo trabajar en una funcionalidad para créditos académicos?
|
||||
|
||||
Sí. Ten en cuenta que no podemos comprometernos con ningún cronograma o papeleo que pueda ser un requisito de tu colegio o universidad. Recibimos muchos pull-requests y contribuciones de código por parte de desarrolladores voluntarios, y respetamos su tiempo y esfuerzos. Por respeto a todos nuestros demás colaboradores, no concederemos ninguna prioridad especial a las relaciones públicas sólo porque esté relacionada con la escuela.
|
||||
Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related.
|
||||
|
||||
Le pedimos que planifique con anticipación y que trabaje en las contribuciones de código teniendo esto en cuenta.
|
||||
We request you to plan ahead and work on code contributions with this in mind.
|
||||
|
||||
### ¿Qué significan estas diferentes etiquetas que están agregadas en los temas?
|
||||
|
||||
Los mantenedores de código [clasifican](https://en.wikipedia.org/wiki/Software_bug#Bug_management) problemas y pull requests basados en su prioridad, gravedad y otros factores. Puedes [encontrar un glosario completo de sus significados aquí](https://github.com/freecodecamp/freecodecamp/labels).
|
||||
The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels).
|
||||
|
||||
### ¿Dónde comienzo si quiero trabajar en una propuesta?
|
||||
|
||||
Deberías pasar por los temas [**`se busca ayuda`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) o [**`solo principiantes`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) para una rápida visión general de lo que está disponible para que trabajes.
|
||||
You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on.
|
||||
|
||||
> [!TIP] Los temas de **`se busca ayuda`** están en marcha y no es necesario pedir permiso antes de trabajar en ellos. Sin embargo, temas con la etiqueta **`solo principiantes`** son temas especiales que están diseñados para personas que no han contribuido a la base de código de freeCodeCamp antes.
|
||||
|
||||
### Encontré un error tipográfico. ¿Debo informar de un problema antes de poder hacer un pull request?
|
||||
|
||||
Para los errores tipográficos y otros cambios de formulación, puedes abrir directamente pull-requests sin crear una propuesta primero. Por favor, asegúrese de mencionar los detalles en la descripción de la pull request para ayudarnos a entender y revisar su contribución – incluso si es un cambio menor.
|
||||
For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change.
|
||||
|
||||
Por favor cree un problema si desea discutir aspectos más amplios del código base o currículum.
|
||||
Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum.
|
||||
|
||||
### ¿Cómo puedo conseguir que me asignen un número?
|
||||
|
||||
Por lo general, no asignamos los números a nadie más que a los colaboradores de larga duración. En lugar de ello, seguimos la política de abajo para ser justos con todos:
|
||||
We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone:
|
||||
|
||||
1. Lo más probable es que fusionemos el primer pull request que aborde el número o problema.
|
||||
2. En el caso de múltiples colaboradores abriendo un pull request para el mismo problema más o menos al mismo tiempo, daremos prioridad al pull request que aborde mejor la cuestión. Algunas de las cosas que consideramos:
|
||||
@ -57,18 +61,18 @@ Por lo general, no asignamos los números a nadie más que a los colaboradores d
|
||||
|
||||
### Estoy atascado en algo que no está incluido en esta documentación.
|
||||
|
||||
**Siéntete libre de pedir ayuda en:**
|
||||
**Feel free to ask for help in:**
|
||||
|
||||
- La categoría de `colaboradores` de [nuestro foro de la comunidad](https://forum.freecodecamp.org/c/contributors).
|
||||
- The `#Contributors` channel on [our chat server](https://chat.freecodecamp.org/channel/contributors).
|
||||
|
||||
Estamos encantados de ayudarte a contribuir a cualquiera de los temas en los que te gustaría trabajar. Si nos hace preguntas sobre los temas relacionados, estaremos encantados de aclararlos. Asegúrese de buscar su pregunta antes de publicar una nueva.
|
||||
We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one.
|
||||
|
||||
Gracias de antemano por ser educado y paciente. Recuerde – esta comunidad se maneja principalmente por voluntarios.
|
||||
Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers.
|
||||
|
||||
**Asistencia Adicional:**
|
||||
**Additional Assistance:**
|
||||
|
||||
Si tiene preguntas acerca del stack, arquitectura de la base de código, no dude en contactar con nuestro equipo de desarrollo:
|
||||
If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team:
|
||||
|
||||
| Personal | Enviar mensaje en el Foro |
|
||||
|:--------------------- |:---------------------------------------------------------------------------- |
|
||||
@ -79,4 +83,4 @@ Si tiene preguntas acerca del stack, arquitectura de la base de código, no dude
|
||||
| Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) |
|
||||
| Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) |
|
||||
|
||||
**Puedes enviar un correo electrónico a nuestro equipo de desarrolladores en: `dev[at]freecodecamp.org`**
|
||||
**You can email our developer staff at: `dev[at]freecodecamp.org`**
|
||||
|
@ -11,11 +11,11 @@
|
||||
- **Translation Contribution**
|
||||
- [Translating a Curriculum File](how-to-translate-files.md)
|
||||
- [Proofreading a Curriculum File](how-to-proofread-files.md)
|
||||
- [How to Translate the Website](how-to-translate-the-website.md)
|
||||
- **Optional Guides**
|
||||
- [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md)
|
||||
- [Set up freeCodeCamp on WSL](how-to-setup-wsl.md)
|
||||
- [Add Cypress tests](how-to-add-cypress-tests.md)
|
||||
- [How to Translate the Website](how-to-translate-the-website.md)
|
||||
|
||||
---
|
||||
|
||||
|
@ -16,13 +16,13 @@ Esto involucra tres pasos que deben seguirse en secuencia:
|
||||
|
||||
#### Construyendo la base de código - Mapeando las Ramas de Git con los Despliegues.
|
||||
|
||||
Typically, [`main`](https://github.com/freeCodeCamp/freeCodeCamp/tree/main) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure.
|
||||
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.
|
||||
|
||||
Esta es una publicación intermedia para nuestros desarrolladores y colaboradores voluntarios. También es conocida como nuestra publicación "staging" o "beta".
|
||||
|
||||
Este es idéntico a nuestro entorno de producción en ` freeCodeCamp.org`, excepto que utiliza un conjunto separado de bases de datos, servidores, web-proxies, etc. Este aislamiento nos permite probar el desarrollo y las funcionalidades de manera continua en un escenario similar al de "producción", sin afectar a los usuarios regulares de las principales plataformas de freeCodeCamp.org.
|
||||
|
||||
Una vez que el equipo de desarrolladores [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) está satisfecho con los cambios en la plataforma de staging, estos cambios se trasladan cada pocos días a la rama [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current).
|
||||
Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`prod-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/prod-current) branch.
|
||||
|
||||
Esta es la versión final que despliega los cambios a nuestras plataformas de producción en freeCodeCamp.org.
|
||||
|
||||
@ -94,10 +94,10 @@ Actualmente, solo los miembros del equipo de desarrolladores pueden enviar cambi
|
||||
npm run clean-and-develop
|
||||
```
|
||||
|
||||
5. Move changes from `main` to `production-staging` via a fast-forward merge
|
||||
5. Move changes from `main` to `prod-staging` via a fast-forward merge
|
||||
|
||||
```
|
||||
git checkout production-staging
|
||||
git checkout prod-staging
|
||||
git merge main
|
||||
git push upstream
|
||||
```
|
||||
@ -106,12 +106,10 @@ Actualmente, solo los miembros del equipo de desarrolladores pueden enviar cambi
|
||||
>
|
||||
> 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 `production-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.
|
||||
The above steps will automatically trigger a run on the build pipeline for the `prod-staging` branch. 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.
|
||||
|
||||
> [!TIP|label:Estimates] Por lo general, la ejecución de la compilación tarda entre 20 y 25 minutos en completarse, seguido de la ejecución de publicación que tarda aproximadamente entre 15 y 20 minutos para el cliente, y aproximadamente entre 5 y 10 minutos para que el API estén disponibles en vivo. Desde que el código se envía al servidor hasta que está en vivo en las plataformas de staging, todo el proceso toma **aproximadamente 35 a 45 minutos** en total.
|
||||
|
||||
### Publicando cambios a las Aplicaciones en Producción.
|
||||
|
||||
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.
|
||||
@ -121,19 +119,19 @@ El proceso es prácticamente el mismo que el de las plataformas de staging, con
|
||||
| |
|
||||
|
||||
|
||||
1. Asegúrate de que tu rama `production-staging` no tenga cambios pendientes y esté sincronizada con upstream.
|
||||
1. Make sure your `prod-staging` branch is pristine and in sync with the upstream.
|
||||
|
||||
```sh
|
||||
git checkout production-staging
|
||||
git checkout prod-staging
|
||||
git fetch --all --prune
|
||||
git reset --hard upstream/production-staging
|
||||
git reset --hard upstream/prod-staging
|
||||
```
|
||||
|
||||
2. Mueve los cambios de `production-staging` a `production-current` mediante una fusión fast-forward
|
||||
2. Move changes from `prod-staging` to `prod-current` via a fast-forward merge
|
||||
|
||||
```
|
||||
git checkout production-current
|
||||
git merge production-staging
|
||||
git checkout prod-current
|
||||
git merge prod-staging
|
||||
git push upstream
|
||||
```
|
||||
|
||||
@ -141,9 +139,7 @@ El proceso es prácticamente el mismo que el de las plataformas de staging, con
|
||||
>
|
||||
> 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 `production-current`. Una vez que un artefacto de compilación está listo, este activará la ejecución en el flujo de publicación.
|
||||
|
||||
> [!TIP|label:Estimates] Normalmente, la ejecución de la compilación tarda entre 20 y 25 minutos en completarse.
|
||||
The above steps will automatically trigger a run on the build pipeline for the `prod-current` branch. Una vez que un artefacto de compilación está listo, este activará la ejecución en el flujo de publicación.
|
||||
|
||||
**Pasos Adicionales para el Staff Action**
|
||||
|
||||
@ -158,21 +154,18 @@ 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. Por lo general, esto tomará entre 15 y 20 minutos para el cliente y aproximadamente 5 minutos para que los servidores API estén disponibles en vivo respectivamente.
|
||||
|
||||
> [!TIP|label:Estimates] La publicación suele tardar entre 15 y 20 minutos para cada instancia de cliente, y entre 5 y 10 minutos para que cada instancia de API esté disponible en vivo. Desde el envío del código hasta que está en vivo en las plataformas de producción, todo el proceso toma en total **entre 90 y 120 minutos aproximadamente** (sin contar el tiempo de espera para la aprobación del personal).
|
||||
Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers.
|
||||
|
||||
## Estado de la Compilación, Pruebas y Despliegue
|
||||
|
||||
Aquí está el estado actual de las pruebas, compilación y despliegue del código base.
|
||||
|
||||
| Tipo | Rama | Estado | Panel |
|
||||
|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:---------------------------------------------------------------------------------------- |
|
||||
| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Ir al panel de estado](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) |
|
||||
| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Ir al panel de estado](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
|
||||
| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) |  | [Ir al panel de estado](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
|
||||
| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Ir al panel de estado](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) |
|
||||
| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Ir al panel de estado](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
|
||||
| Branch | Unit Tests | Integration Tests | Builds & Deployments |
|
||||
|:-------------------------------------------------------------------------------- |:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |:--------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| [`main`](https://github.com/freeCodeCamp/freeCodeCamp/tree/main) | [](https://github.com/freeCodeCamp/freeCodeCamp/actions?query=workflow%3A%22Node.js+CI%22) | [](https://dashboard.cypress.io/projects/ke77ns/analytics/runs-over-time) | - |
|
||||
| [`prod-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/prod-staging) | [](https://github.com/freeCodeCamp/freeCodeCamp/actions?query=workflow%3A%22Node.js+CI%22+branch%3Aprod-staging) | [](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-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/prod-staging) | [](https://github.com/freeCodeCamp/freeCodeCamp/actions?query=workflow%3A%22Node.js+CI%22+branch%3Aprod-current) | [](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) | - | - | - |
|
||||
|
||||
## Acceso anticipado y pruebas beta
|
||||
|
||||
@ -186,15 +179,25 @@ Te agradecemos por reportar los errores que encuentres y ayudar a mejorar freeCo
|
||||
|
||||
Actualmente una versión de prueba beta pública está disponible en:
|
||||
|
||||
<h1 align="center"><a href='https://www.freecodecamp.dev' _target='blank'>freecodecamp.dev</a></h1>
|
||||
| Application | Language | URL |
|
||||
|:----------- |:-------- |:---------------------------------------- |
|
||||
| Learn | English | <https://www.freecodecamp.dev> |
|
||||
| | Espanol | <https://www.freecodecamp.dev/espanol> |
|
||||
| | Chinese | <https://chinese.freecodecamp.dev> |
|
||||
| News | English | <https://www.freecodecamp.dev/news> |
|
||||
| Forum | English | <https://forum.freecodecamp.dev> |
|
||||
| | Chinese | <https://chinese.freecodecamp.dev/forum> |
|
||||
| API | - | `https://api.freecodecamp.dev` |
|
||||
|
||||
> [!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 cualquier confusión en los usuarios habituales de la plataforma.
|
||||
> [!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.
|
||||
|
||||
### Identificando la versión actual de las plataformas
|
||||
|
||||
**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 `production-staging` a `production-current` cuando se publican los cambios. El commit más reciente debe ser lo que ves en vivo en el sitio.
|
||||
The dev-team merges changes from the `prod-staging` branch to `prod-current` when they release changes. 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. Alternatively you can also ping us in the [contributors chat room](https://chat.freecodecamp.org/channel/contributors) for a confirmation.
|
||||
|
||||
@ -220,16 +223,16 @@ Existen algunas limitaciones y problemas conocidos al utilizar la versión beta
|
||||
|
||||
## Reportando problemas y dejando retroalimentación
|
||||
|
||||
Por favor abre un nuevo reporte (issue) para discusiones e informes de errores. Puedes etiquetarlos como **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** para clasificación.
|
||||
Please open fresh issues for discussions and reporting bugs.
|
||||
|
||||
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]
|
||||
>
|
||||
> 1. La guía se aplica únicamente a los **miembros del personal de freeCodeCamp**.
|
||||
> 2. Estas instrucciones no deben considerarse exhaustivas, por favor ten cuidado.
|
||||
> 1. The guide applies to the **freeCodeCamp Staff members only**.
|
||||
> 2. These instructions should not be considered exhaustive, please use caution.
|
||||
|
||||
Como miembro del equipo interno, es posible que se te haya dado acceso a nuestros proveedores de servicios en la nube como Azure, Digital Ocean, etc.
|
||||
|
||||
@ -237,25 +240,25 @@ Estos son algunos comandos prácticos que puedes usar para trabajar en las Máqu
|
||||
|
||||
## Obtener una lista de las Máquinas Virtuales
|
||||
|
||||
> [!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 been granted access to the cloud portals as well.
|
||||
|
||||
### Azure
|
||||
|
||||
Instala el CLI de Azure `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
|
||||
|
||||
> **(Una sola vez) Instalar en macOS con [`homebrew`](https://brew.sh):**
|
||||
> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):**
|
||||
|
||||
```
|
||||
brew install azure-cli
|
||||
```
|
||||
|
||||
> **(Una sola vez) Inicio de sesión:**
|
||||
> **(One-time) Login:**
|
||||
|
||||
```
|
||||
az login
|
||||
```
|
||||
|
||||
> **Obtener la lista de nombres de las máquinas virtuales y direcciones IP:**
|
||||
> **Get the list of VM names and P addresses:**
|
||||
|
||||
```
|
||||
az vm list-ip-addresses --output table
|
||||
@ -279,7 +282,7 @@ Autenticación y cambio de contexto: https://github.com/digitalocean/doctl#authe
|
||||
doctl auth init
|
||||
```
|
||||
|
||||
> **Obtener la lista de nombres de las máquinas virtuales y direcciones IP:**
|
||||
> **Get the list of VM names and IP addresses:**
|
||||
|
||||
```
|
||||
doctl compute droplet list --format "ID,Name,PublicIPv4"
|
||||
@ -287,7 +290,7 @@ doctl compute droplet list --format "ID,Name,PublicIPv4"
|
||||
|
||||
## Iniciar una VM (o Conjunto de Escalado de VMs)
|
||||
|
||||
> Todo: Agregar instrucciones para iniciar VM(s)
|
||||
> Todo: Add instructions for spinning VM(s)
|
||||
|
||||
|
||||
<!--
|
||||
@ -388,10 +391,10 @@ az vmss create \
|
||||
|
||||
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.
|
||||
|
||||
> [!WARNING] Antes de ejecutar estos comandos:
|
||||
> [!WARNING] Before you run these commands:
|
||||
>
|
||||
> - Asegúreate de que la máquina virtual se ha aprovisionado completamente y no hay en ejecución pasos posteriores a la instalación.
|
||||
> - 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.
|
||||
> - Make sure that the VM has been provisioned completely and there is no post-install steps running.
|
||||
> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications.
|
||||
|
||||
Actualizar la información de paquetes
|
||||
|
||||
@ -538,7 +541,7 @@ Aprovisionamiento de las VMs con el código
|
||||
```console
|
||||
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
|
||||
cd freeCodeCamp
|
||||
git checkout production-current # o cualquier otra rama a desplegar
|
||||
git checkout prod-current # or any other branch to be deployed
|
||||
```
|
||||
|
||||
4. Crea el archivo `.env` desde el almacenamiento de credenciales seguras.
|
||||
@ -578,7 +581,7 @@ pm2 monit
|
||||
|
||||
Los cambios en el código deben desplegarse en las instancias del API cada cierto tiempo. 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.
|
||||
|
||||
> [!DANGER] 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.
|
||||
> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs.
|
||||
|
||||
#### 1. Actualizaciones Manuales - Utilizadas para actualizar dependencias, variables de entorno.
|
||||
|
||||
@ -612,7 +615,7 @@ pm2 start all --update-env && pm2 logs
|
||||
pm2 reload all --update-env && pm2 logs
|
||||
```
|
||||
|
||||
> [!NOTE] Estamos manejando las actualizaciones continuas de código, lógica, mediante flujos (pipelines). No deberías tener que ejecutar estos comandos. Están aquí para documentación.
|
||||
> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation.
|
||||
|
||||
## Trabajar en Instancias de Cliente
|
||||
|
||||
@ -652,7 +655,7 @@ Aprovisionamiento de las VMs con el código
|
||||
|
||||
Inicia las instancias de marcador para el cliente web, estas se actualizarán con artefactos del flujo de Azure.
|
||||
|
||||
> Todo: Esta configuración debe moverse a S3 o Azure Blob Storage
|
||||
> Todo: This setup needs to move to S3 or Azure Blob storage
|
||||
>
|
||||
> ```console
|
||||
echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh
|
||||
|
@ -6,38 +6,78 @@ To learn how to write Cypress tests, or 'specs', please see Cypress' official [d
|
||||
|
||||
> Note: When writing tests for freeCodeCamp, remember to add `/* global cy */` to the top of the file to avoid ESLint issues.
|
||||
|
||||
### 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
|
||||
|
||||
**1. Ensure that MongoDB and client applications are running**
|
||||
> [!NOTE] If using GitPod, please see [Cypress-GitPod Setup](/how-to-add-cypress-tests#cypress-gitpod-setup)
|
||||
|
||||
- [Start MongoDB and seed the database](/how-to-setup-freecodecamp-locally#step-3-start-mongodb-and-seed-the-database)
|
||||
### 1. Ensure that MongoDB and client applications are running
|
||||
|
||||
- [Start the freeCodeCamp client application and API server](/how-to-setup-freecodecamp-locally#step-4-start-the-freecodecamp-client-application-and-api-server)
|
||||
- [Start MongoDB and seed the database](/how-to-setup-freecodecamp-locally#step-3-start-mongodb-and-seed-the-database)
|
||||
|
||||
**2. Run the cypress tests**
|
||||
- [Start the freeCodeCamp client application and API server](/how-to-setup-freecodecamp-locally#step-4-start-the-freecodecamp-client-application-and-api-server)
|
||||
|
||||
To run tests against production builds, replace `dev` with `prd` below.
|
||||
### 2. Run the cypress tests
|
||||
|
||||
- To run all tests in the `./cypress` directory:
|
||||
To run tests against production builds, replace `dev` with `prd` below.
|
||||
|
||||
```console
|
||||
npm run cypress:dev:run
|
||||
```
|
||||
- To run all tests in the `./cypress` directory:
|
||||
|
||||
- To run a single test:
|
||||
```console
|
||||
npm run cypress:dev:run
|
||||
```
|
||||
|
||||
```console
|
||||
npm run cypress:dev:run -- --spec=cypress/pathToYourSpec/youSpecFileName.js
|
||||
```
|
||||
- To run a single test:
|
||||
|
||||
- To create a development build, start the development server, and run all existing cypress end-to-end tests:
|
||||
```console
|
||||
npm run cypress:dev:run -- --spec=cypress/pathToYourSpec/youSpecFileName.js
|
||||
```
|
||||
|
||||
```console
|
||||
npm run e2e:dev:run
|
||||
```
|
||||
- To create a development build, start the development server, and run all existing cypress end-to-end tests:
|
||||
|
||||
```console
|
||||
npm run e2e:dev:run
|
||||
```
|
||||
|
||||
## Cypress-GitPod Setup
|
||||
|
||||
### 1. Ensure you are on the _Feature Preview_ of GitPod _as of 01/02/2021_
|
||||
|
||||
- Go to [GitPod Docs - Feature Preview](https://www.gitpod.io/docs/feature-preview/) to see how to enable _Feature Preview_
|
||||
|
||||
### 2. Ensure Development Environment is Running
|
||||
|
||||
If starting the GitPod environment did not automatically develop the environment:
|
||||
|
||||
- Start the database
|
||||
|
||||
```console
|
||||
mongod
|
||||
```
|
||||
|
||||
- Seed the database
|
||||
|
||||
```console
|
||||
npm run seed
|
||||
```
|
||||
|
||||
- Develop the server and client
|
||||
|
||||
```console
|
||||
npm run develop
|
||||
```
|
||||
|
||||
### 3. Install Cypress Build Tools
|
||||
|
||||
```console
|
||||
npm run cypress:install-build-tools
|
||||
```
|
||||
|
||||
- When prompted in the terminal, select your keyboard layout by language/area
|
||||
|
||||
Now, [Cypress can be run](/how-to-add-cypress-tests#_2-run-the-cypress-tests)
|
||||
|
@ -2,13 +2,15 @@
|
||||
|
||||
Una pull request (PR) le permite enviar cambios desde su bifurcación en GitHub al repositorio principal de freeCodeCamp.org. Una vez que haya hecho cambios en el código, puede seguir estas pautas para abrir un PR.
|
||||
|
||||
> [!NOTE] Your PR should be in English. See [here](#index.md?id=translations) for how to contribute translations.
|
||||
|
||||
## Prepara un buen título para tu PR
|
||||
|
||||
Recomendamos usar [titulos y mensajes convencionales](https://www.conventionalcommits.org/) para tus commits y pull request. La convención tiene el siguiente formato:
|
||||
|
||||
> `<type>([ámbito opcional(s)]): <description>`
|
||||
> `<type>([optional scope(s)]): <description>`
|
||||
>
|
||||
> Por ejemplo:
|
||||
> For example:
|
||||
>
|
||||
> `fix(learn): tests for the do...while loop challenge`
|
||||
|
||||
@ -23,15 +25,15 @@ When opening a Pull Request(PR), you can use the below to determine the type, sc
|
||||
| chore | Changes that are not related to code, tests, or verbiage of a lesson. |
|
||||
| docs | Cambios al directorio `/docs` o a las pautas de contribución, etc. |
|
||||
|
||||
**Alcance:**
|
||||
**Ámbito:**
|
||||
|
||||
Puede seleccionar un ámbito de [esta lista de etiquetas](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope).
|
||||
|
||||
**Descripción:**
|
||||
|
||||
Manténgalo corto (menos de 30 caracteres) y simple, puede agregar más información en el cuadro de descripción de relaciones públicas y comentarios.
|
||||
Mantenlo corto (menos de 30 caracteres) y sencillo, puedes agregar más información en la caja de descripción del PR y comentarios.
|
||||
|
||||
Algunos ejemplos de buenos títulos PRs serían:
|
||||
Algunos ejemplos de buenos títulos para PRs serían:
|
||||
|
||||
- `fix(a11y): contraste mejorado en la barra de búsqueda`
|
||||
- `feat: add more tests to HTML and CSS challenges`
|
||||
@ -70,13 +72,13 @@ Algunos ejemplos de buenos títulos PRs serían:
|
||||
|
||||
## Comentarios sobre pull requests
|
||||
|
||||
> ¡Felicidades! :tada: en hacer relaciones públicas y muchas gracias por tomarse el tiempo para contribuir.
|
||||
> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute.
|
||||
|
||||
Nuestros moderadores ahora echarán un vistazo y te dejarán tus comentarios. Por favor, sea paciente con los demás moderadores y respete su tiempo. Todos los pull requests son revisados a su debido tiempo.
|
||||
|
||||
And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [the contributors chat room](https://chat.freecodecamp.org/channel/contributors).
|
||||
|
||||
> [!TIP] Si quieres contribuir con más solicitudes de extracción, te recomendamos que leas las directrices [haciendo cambios y sincronizando](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) para evitar tener que borrar tu bifurcación.
|
||||
> [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork.
|
||||
|
||||
## Conflicto en un pull request
|
||||
|
||||
|
@ -20,6 +20,8 @@ Cada archivo y carpeta mostrará una barra de progreso. La parte **azul** de la
|
||||
|
||||
Selecciona un archivo para trabajar y Crowdin abrirá la vista de edición.
|
||||
|
||||
> [!NOTE] When the editor view opens, you will need to click the settings icon (shown as a gear) and switch the 'HTML tags displaying' setting to 'SHOW'. This will ensure you can see tags such as `<code></code>` instead of `<0></0>`.
|
||||
|
||||
## Traducir un archivo
|
||||
|
||||

|
||||
@ -37,19 +39,19 @@ Crowdin separa un documento en "cadenas" traducibles, normalmente oraciones. Cad
|
||||
9. Aquí puedes ver la ventana de comentarios. Si tienes preguntas o inquietudes sobre una cadena en particular, puedes dejar aquí un comentario sobre la cadena para que lo vean otros traductores.
|
||||
10. Estos dos botones de "panel" ocultarán las vistas izquierda (documento) y derecha (comentarios).
|
||||
|
||||
> [!NOTE] Si ves una cadena oculta que incluye traducciones, notifícanos en la [ sala de chat de traductores ](https://chat.freecodecamp.org/channel/translators) para que podamos eliminar la traducción de la memoria.
|
||||
> [!NOTE] If you see a hidden string that includes translations, please notify us in the [translators chat room](https://chat.freecodecamp.org/channel/translators) so we can remove the translation from memory.
|
||||
|
||||
Cuando hayas completado la traducción de una cadena, pulsa el botón `Save` (guardar) para almacenar tu traducción en Crowdin. Luego, otros contribuyentes podrán votar tu traducción y los proofreaders podrán aprobarla.
|
||||
|
||||
Eres bienvenido a traducir tantas cadenas como desees, no se requieren pasos adicionales cuando completas todo un archivo o propones una nueva traducción. Hacer clic en el botón `Save` es todo lo que se necesita para almacenar una traducción.
|
||||
|
||||
> [!NOTE] Si ves algo en el archivo fuente en inglés que sea inexacto o incorrecto, no lo corrijas a través del flujo de traducción. En su lugar, deja un comentario en la cadena para notificarnos que hay una discrepancia, o crea un issue en GitHub.
|
||||
> [!NOTE] If you see something in the English source file that is inaccurate or incorrect, please do not fix it through the translation flow. Instead, leave a comment on the string to notify us that there is a discrepancy, or create a GitHub issue.
|
||||
|
||||
### Traducir la documentación
|
||||
|
||||
Traducir nuestra documentación de contribución es un proceso similar a traducir nuestros archivos de currículo.
|
||||
|
||||
> [!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.
|
||||
> [!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.
|
||||
|
||||
## Calificar traducciones
|
||||
|
||||
@ -69,20 +71,14 @@ Cuando intentes guardar una traducción, es posible que veas aparecer un mensaje
|
||||
|
||||
Este mensaje aparece cuando el sistema de control de calidad de Crowdin ha identificado un posible error en la traducción propuesta. En este ejemplo, hemos modificado el texto de una etiqueta `<code>` y Crowdin lo ha detectado.
|
||||
|
||||
> [!WARNING] Tienes la opción de guardar una traducción a pesar de los errores, pero esto debe hacerse solo en circunstancias en las que el error pueda ser incorrecto.
|
||||
|
||||
Crowdin a veces convierte etiquetas HTML (como `<code>`) en valores numéricos, como `<0>text</0>` o `<1>text</1>`. Estas etiquetas suelen ser etiquetas de código y nuestro control de calidad verificará que no se hayan traducido. Sin embargo, a veces pueden ser etiquetas `<strong>` o `<em>`, que _deberían_ ser traducidas. Si pasas el cursor sobre una etiqueta numérica en la cadena de origen, puedes ver qué etiqueta o etiquetas HTML se han reemplazado:
|
||||
|
||||

|
||||
|
||||
Si las etiquetas reemplazadas son algo que debería traducirse (como las etiquetas `strong`), traduce el contenido dentro de las etiquetas y selecciona "Save Anyway" (guardar de todos modos) cuando aparezca el error. Luego, deja un comentario en la cadena explicando que las etiquetas son `strong` (por ejemplo) para que otros traductores y proofreaders sepan que deben traducirse.
|
||||
> [!WARNING] You have the option to save a translation in spite of errors. If you do, by clicking "Save Anyway", you should also tag a proofreader or project manager and explain why the QA message needs to be ignored in this case.
|
||||
|
||||
## Buenas prácticas de traducción
|
||||
|
||||
Sigue estas pautas para asegurarte de que nuestras traducciones sean lo más precisas posible:
|
||||
Follow these guidelines to ensure our translations are as accurate as possible:
|
||||
|
||||
- No traduzcas el contenido dentro de las etiquetas `<code>`. Estas etiquetas indican texto que se encuentra en el código y deben dejarse en inglés.
|
||||
- No agregues contenido adicional. Si crees que un desafío requiere cambios en el contenido del texto o información adicional, debes proponer los cambios a través de un issue de GitHub o una pull request que modifique el archivo en inglés.
|
||||
- No cambies el orden del contenido.
|
||||
|
||||
Si tienes alguna pregunta, no dudes en comunicarte con nosotros en nuestra [sala de chat de traductores](https://chat.freecodecamp.org/channel/translators) y estaremos encantados de ayudarte.
|
||||
If you have any questions, feel free to reach out to us in our [translators chat room](https://chat.freecodecamp.org/channel/translators) and we will be happy to assist you.
|
||||
|
@ -1,6 +1,6 @@
|
||||
The client/react side of our website is translated into various world languages using [react-i18next](https://react.i18next.com/) and [i18next](https://www.i18next.com/).
|
||||
|
||||
> [!NOTE] This does not include the curriculum
|
||||
> [!NOTE] Curriculum lesson content is [translated separately](./how-to-translate-files.md).
|
||||
|
||||
## File Structure
|
||||
|
||||
@ -8,7 +8,13 @@ The files for translating the website are located in the `client/i18n` folder. E
|
||||
|
||||
The values in the `translations.json` file contain the majority of the text that appears on the website. 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 `motivation.json` files are not required to have the same quotes, compliments, or array length. Just the same JSON structure.
|
||||
The `intro.json` file contains the key-value pairs for the introduction text on the certification pages.
|
||||
|
||||
The `motivation.json` files are not required to have the same quotes, compliments, or array length. Just the same JSON structure. These are not translated via Crowdin.
|
||||
|
||||
The `trending.json` file contians the titles and links for the trending news articles in the website's footer. These are not translated via Crowdin.
|
||||
|
||||
The `meta-tags.json` file contains the information for our website's meta tag information. These are not translated via Crowdin.
|
||||
|
||||
## Adding a Language
|
||||
|
||||
@ -18,16 +24,9 @@ In the `allLangs.js` file, add the language to the `client` array in the first v
|
||||
|
||||
## How to Translate
|
||||
|
||||
After a new language is added, you just need to translate the JSON files into the language.
|
||||
Translating the `intro.json` and `translations.json` are done through [our translation site](https://translate.freecodecamp.org). View our [translation documentation for that site](/how-to-translate-files.md).
|
||||
|
||||
Here are some tips:
|
||||
- Only translate the values in the JSON files, the keys need to stay the same
|
||||
- The English versions of the JSON files are the "source of truth" for what needs to be translated. If you are unsure what text to translate, find the matching key in the English version of the file and translate that text
|
||||
- Be sure to escape double quotes (`\"`) in the strings if you need to use them
|
||||
- Most of the time, when you see text wrapped in number tags (`<0>`text`</0>`) tags, it's a link. It is okay to change the text that it is wrapped around. Just keep the same tags.
|
||||
- A value that has something like `{{value}}` in it is a variable. Don't change any of those characters. You can move that whole group of characters around though.
|
||||
|
||||
There's some [help on how make changes and open a PR here](/how-to-setup-freecodecamp-locally).
|
||||
Modifications to the `trending.json`, `meta-tags.json`, and `motivation.json` files should typically only be done by staff.
|
||||
|
||||
## Running it Locally
|
||||
|
||||
@ -179,19 +178,23 @@ const email = 'team@freecodecamp.org';
|
||||
|
||||
In the above example, the key and a variable are set in the attributes of the `Trans` component. `{{ email }}` needs to be somewhere in the `Trans` component as well, it doesn't matter where.
|
||||
|
||||
## Changing Text
|
||||
|
||||
To change text on the client side of things, go to the relevant `.json` file, find the key that is being used in the React component, and change the value to the new text you want. You should search the codebase for that key to make sure it isn't being used elsewhere. Or, if it is, that the changes make sense in all places.
|
||||
|
||||
## Adding Text
|
||||
|
||||
If the text you want to add to the client exists in the relevant `.json` file, use the existing key. Otherwise, create a new key.
|
||||
|
||||
The matching filename`-schema.js` file is the "source of truth" for all of the `.json` files sharing the same name. If you need to add a new key, add it there. Then, add the key to **all** of the `translations.json` files.
|
||||
|
||||
> [!NOTE] Use English text for all languages if the file is translated through Crowdin. The tests will fail if you don'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.
|
||||
|
||||
## Helpful Documentation
|
||||
|
||||
- [react-i18next docs](https://react.i18next.com/latest/usetranslation-hook)
|
||||
- [i18next docs](https://www.i18next.com/translation-function/essentials)
|
||||
|
||||
## Changing Text
|
||||
|
||||
To change text on the client side of things, go to the `translations.json` file, find the key that is being used in the react component, and change the value to the new text you want. You should search the codebase for that key to make sure it isn't being used elsewhere. Or, if it is, that the changes make sense in all places.
|
||||
|
||||
## Adding Text
|
||||
|
||||
If the text you want to add to the client exists in the `translations.json` file, use the existing key. No sense in creating another one.
|
||||
|
||||
The `translations-schema.js` file is the "source of truth" for all of the `translations.json` files. If you need to add a new key, add it there. Then, add the key to **all** of the `translations.json` files with placeholder text in the langauges you don't know. The tests will fail if you don'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.
|
||||
|
@ -8,7 +8,7 @@ Te damos la bienvenida a:
|
||||
|
||||
- Crea, actualiza y corrige errores en nuestro [plan de estudios](#curriculum).
|
||||
- Ayúdarnos a corregir errores en la [plataforma de aprendizaje](#learning-platform) de freeCodeCamp.org.
|
||||
- _(Próximamente)_ Ayúdarnos a traducir freeCodeCamp.org a idiomas del mundo.
|
||||
- [Help us translate](#translations) freeCodeCamp.org to world languages.
|
||||
|
||||
Respondemos a las preguntas más comunes sobre cómo contribuir [en nuestras preguntas frecuentes del contribuidor](/FAQ.md).
|
||||
|
||||
@ -20,24 +20,32 @@ Puede ayudar a ampliar y mejorar el plan de estudios. También puede actualizar
|
||||
|
||||
**Si estás interesado en mejorar nuestro plan de estudios, aquí mostramos [cómo contribuir al plan de estudios](how-to-work-on-coding-challenges.md).**
|
||||
|
||||
## Plataforma de Aprendizaje
|
||||
## Translations
|
||||
|
||||
Nuestra plataforma de aprendizaje se ejecuta sobre un apilar moderno de JavaScript. Tiene varios componentes, herramientas y librerías. Estas incluyen Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, entre otras.
|
||||
We are localizing freeCodeCamp.org to world languages starting with Chinese and Espanol. We will be expanding the translations to more languages. It's our dream to provide you with resources to learn, no matter the world language you speak.
|
||||
|
||||
Ampliamente, hacemos uso de
|
||||
To help us with this massive effort, we have integrated our open-source code-base & curriculum with [Crowdin](https://crowdin.com/).
|
||||
|
||||
**If you're interested in translating, here are the guides to translate our [curriculum](how-to-translate-files.md), the [learning platform](how-to-translate-the-website.md) and our [Contributing guidelines](https://translate.freecodecamp.org/contributing-docs).**
|
||||
|
||||
## Learning Platform
|
||||
|
||||
Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more.
|
||||
|
||||
Broadly, we use
|
||||
|
||||
- un servidor con una API basada en Node.js
|
||||
- un conjunto de aplicaciones client-side basadas en React
|
||||
- y scripts de prueba para evaluar los proyectos curriculares enviados por nuestros campers.
|
||||
|
||||
Si deseas contribuir de forma activa a la mejora del plan de estudios, te recomendamos familiarizarte con las herramientas que se han mencionado.
|
||||
If you want to productively contribute to the curriculum, we recommend some familiarity with these tools.
|
||||
|
||||
Si deseas ayudarnos a mejorar nuestro código base...
|
||||
If you want to help us improve our codebase...
|
||||
|
||||
**puedes optar por utilizar Gitpod, una herramienta de desarrollo en linea que crea ambientes listos para escribir código para freeCodeCamp directamente en el navegador.**
|
||||
**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.**
|
||||
|
||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||
|
||||
O también puedes...
|
||||
Or you can...
|
||||
|
||||
**[configurar freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md) en tu máquina. **
|
||||
**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.**
|
||||
|
@ -225,9 +225,9 @@ Los Bans de Discord son globales - no puedes banear a un usuario de un canal esp
|
||||
|
||||
There may be situations where you need to address a concern with a camper privately. This should not be done through DMs, as this can lead to situations where you claim one thing and the camper claims another. Instead, use the bot's functionality to create a private discussion:
|
||||
|
||||
- Call the `!fCC moderate private @username` command, where `@username` is the *Discord mention* of the user. If you are calling this command from a private channel (such as #mod-chat), you will need to parse the mention manually: Ensure you have Developer Mode turned on in your Discord settings, then right-click on the user's avatar and select `Copy ID`. Replace the `@username` parameter with `<@!ID>`, where `ID` is the value you copied earlier. The result should look like: `!fCC moderate private <@!465650873650118659>`.
|
||||
- Call the `!fCC moderate private @username` command, where `@username` is the _Discord mention_ of the user. If you are calling this command from a private channel (such as #mod-chat), you will need to parse the mention manually: Ensure you have Developer Mode turned on in your Discord settings, then right-click on the user's avatar and select `Copy ID`. Replace the `@username` parameter with `<@!ID>`, where `ID` is the value you copied earlier. The result should look like: `!fCC moderate private <@!465650873650118659>`.
|
||||
- The bot will create a new channel under the `private` category and add the `@username`-mentioned camper and all moderators with the `Your Friendly Moderator` role. While all moderators are added to the channel for transparency, the moderator who calls this command should be the only one to interact with the camper unless they request assistance.
|
||||
- When the conversation is complete, call the `!fCC moderate close` command *in the private channel* to have the bot close and delete that channel.
|
||||
- When the conversation is complete, call the `!fCC moderate close` command _in the private channel_ to have the bot close and delete that channel.
|
||||
|
||||
4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations:
|
||||
|
||||
@ -364,14 +364,14 @@ Feel free to reference the [contributing guidelines](https://contribute.freecode
|
||||
|
||||
### Syncing Fork
|
||||
|
||||
> When PR is not up to date with the `master` branch.
|
||||
> When PR is not up to date with the `main` branch.
|
||||
|
||||
````markdown
|
||||
Hey @username
|
||||
|
||||
We would love to be able to merge your changes but it looks like the branch is not up to date. ⚠️
|
||||
|
||||
To resolve this error, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo.
|
||||
To resolve this error, you will have to sync the latest changes from the `main` branch of the `freeCodeCamp/freeCodeCamp` repo.
|
||||
|
||||
Using the command line, you can do this in three easy steps:
|
||||
|
||||
|
Reference in New Issue
Block a user